是否可以有一个 CollectionElementCollection,其中包含许多不同类型的 CollectionElement,例如:
<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
not中定义MyElement
,尤其是如果MyCollection
有 next 方法:
protected override ConfigurationElement CreateNewElement()
{
return new MyElement(); // but I want instantiate not the base class but by a type given
}
即返回基类,因此OnDeserializeUnrecognizedAttribute()
在子类中永远不会被调用。
那么问题来了:如何让子类自己解决未知元素呢?