I tried customTag.Add(appSetting);
method but I get this error: Collection is read-only.
Это означает, что customTag
объект предназначен только для чтения, и не может быть записано. .Add
пытается изменить оригинал NameValueCollection
. System.Configuration
содержит ReadOnlyNameValueCollection
, который расширяет NameValueCollection
, чтобы сделать его доступным только для чтения, и поэтому, несмотря на то, что литье на общий NameValueCollection
, объект по-прежнему доступен для чтения.
How would I combine them to one, so i can access all the elements from both?
Все, что вам нужно, это добавить обе коллекции третьей записываемой NameValueCollection
.
Дано:
var customTag = (NameValueCollection)System.Configuration.ConfigurationManager.GetSection("secureAppSettings");
var appSetting = (NameValueCollection)System.Configuration.ConfigurationManager.GetSection("appSettings");
Вы могли .Add
как:
var collection = new NameValueCollection();
collection.Add(customTag);
collection.Add(appSettings);
Однако NameValueCollection
конструктор имеет сокращенную, который вызывает Add
внутренне:
var collection = new NameValueCollection(customTag);
collection.Add(appSettings);
Имейте в виду, что в обоих случаях использование Add
позволит добавлять к каждому ключу несколько значений.
Например, если вы должны были объединить {foo: "bar"}
и {foo: "baz"}
, результат будет {foo: ["bar", "baz"]}
(синтаксис JSON, используемый для краткости).
Что вы хотите сделать, если оба они имеют одинаковое значение ключа? –
Они должны перезаписать. – User765876
Что нужно переписать? –