J'ai deux namevaluecollections: J'ai essayé Comment puis-je les combiner à un, afin que je puisse accéder à tous les éléments des deux? p> p> CustomTag.add (appSetage); code> méthode mais je reçois cette erreur:
la collection est en lecture seule . code> p>
3 Réponses :
Pour combiner les collections, essayez quelque chose comme ce qui suit: Utilisez la nouvelle collection code> AllseSettings code> pour accéder aux paramètres combinés. p> p >
Comment ces paramètres de chaîne de requête semblable à ceux-ci?
@Palswim je n'avais pas testé cela spécifiquement. Y a-t-il un exemple que vous pouvez me donner qui ne fonctionne pas?
Et si vous ne voulez pas écraser mais fusionner / combiner?
Salut, @timschmelter. Vous pouvez utiliser la méthode Ajouter pour fusionner NameValuecollections sans remplacer ce qui est déjà là. Les valeurs avec la même clé sont combinées dans des chaînes séparées par des virgules. S'il vous plaît voir Docs. microsoft.com/en-us/dotnet/api/...
J'ai essayé
CustomTag.add (appSetage); code> méthode mais je reçois cette erreur:
la collection est en lecture seule. Code> P>
Ceci signifie que l'objet
CustomTag code> est en lecture seule et ne peut pas être écrit à.
.add code> tente de modifier l'original
namevaluecollection code>.
System.Configuration Code> Contient un
ReadonlyNameValuecollection Code> qui s'étend
nomvaluecollection code> pour le rendre en lecture seule, et donc malgré la mise en forme sur le générique
namevaluecollection code >, l'objet est toujours en lecture seule. P>
Comment puis-je les combiner à un, afin que je puisse accéder à tous les éléments des deux? p> blockQuote>
Tout ce dont vous avez besoin est d'ajouter les deux collections à une troisième référence écrite
namevaluecollection code>. p>
donné: p>
var collection = new NameValueCollection(customTag); collection.Add(appSettings);
Je me demandais à ce sujet! Beaucoup plus propre que la réponse acceptée.
réponse par ZZZZBOV est terminé. Toutefois, si vous souhaitez fusionner plusieurs nomsValuecollection ou ne pas modifier l'un des originaux, vous pouvez envisager la méthode suivante qui fusionne un nombre arbitraire de Exemple d'utilisation strong> p> La méthode est également suffisamment robuste pour supporter namevaluecollection code>.
Fusionner (NULL) CODE> ou
Fusion () CODE> et renvoie simplement un
NomBevaluecollection Code>. Cela garantira que votre code ne propose pas d'exceptions en raison de la mauvaise entrée. P> p>
Que se passe-t-il avec des touches en double qui est la partie intéressante de la méthode de fusion?
Que voulez-vous faire s'ils ont tous les deux la même valeur clé?
Ils devraient écraser.
Qui devrait écraser?
Celui qui est ajouté devrait écraser l'original. Dans ce cas, l'appSeting devrait écraser CustomTag.
Compte tenu du message d'exception, il semble que vous devriez créer un nouveau nom de code
nomeucollection code> et copier tous les éléments dans cela. Notez que vous devrez vous inspirer, appeler la méthode
namevaluecollection.set () code>, comme le comportement par défaut de
namevaluecollection code> est d'ajouter la valeur ajoutée à la liste des valeurs existantes , ne pas les écraser.