Можно ли иметь CollectionElementCollection с рядом различных по типу элементов CollectionElements, например:
<collection>
<add type="MyType1, MyLib" Type1SpecificProp="1" />
<add type="MyType2, MyLib" Type2SpecificProp="2" />
</collection
У меня есть все классы, необходимые для такого решения:
class MyCollection : ConfigurationElementCollection { }
class MyElement : ConfigurationElement { }
class MyType1 : MyElement { }
class MyType2 : MyElement { }
...
etc
, но когда я запускаю свое приложение, я получаю следующую предсказуемую ошибку:
Нераспознанный атрибут 'Type1SpecificProp'.
, потому что Type1SpecificProp
определен в MyType1
, а не в MyElement
, особенно если MyCollection
имеет следующий метод:
protected override ConfigurationElement CreateNewElement()
{
return new MyElement(); // but I want instantiate not the base class but by a type given
}
т.е. возвращает базовый класс, таким образом, OnDeserializeUnrecognizedAttribute ()
в дочернем классе никогда не вызывается.
Итак, возникает вопрос: как позволить дочерним классам самостоятельно разрешать неизвестные элементы?