У меня есть рабочий раздел пользовательской конфигурации. Однако получить мои данные через ConfigurationElementCollection
очень сложно, но когда я пытаюсь реализовать свое свойство как IEnumerable, происходит сбой с ошибкой:
ConfigurationErrorsException не было обработано «Свойство 'contacts' не является ConfigurationElement».
Вот код, вызывающий сбой:
[ConfigurationProperty("contacts", IsDefaultCollection = false)]
public IEnumerable<string> Contacts
{
get { return ((ContactCollection)base["contacts"]).Cast<ContactElement>().Select(x => x.Address); }
}
Однако, если я изменю его на это:
[ConfigurationProperty("contacts", IsDefaultCollection = false)]
public ContactCollection Contacts
{
get { return ((ContactCollection)base["contacts"]); }
}
Все работает нормально. Этот ответ звучит так, как будто Microsoft решила, что это не разрешено, и поэтому я не могу иметь никаких свойств типов кроме ConfigurationElement
. Это действительно так? Как я могу реализовать свою собственность как IEnumerable<string>
?
В случае, если это имеет значение, я пытаюсь хранить электронные письма, и я хотел бы иметь элемент для каждого из них, поскольку их может быть несколько, мы можем захотеть хранить больше информации о каждом контакте в будущем, и я думаю один список, разделенный запятыми, может выглядеть некрасиво. Например, что-то вроде:
<emergency>
<contact address="[email protected]" />
<contact address="[email protected]" />
</emergency>
Or
<emergency>
<contact>[email protected]</contact>
<contact>[email protected]</contact>
</emergency>
Спасибо!