CollectionElementsのタイプごとに異なる数のCollectionElementCollectionを作成することは可能ですか?例:
<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()
、子クラスで基本クラスを返すため、呼び出されることはありません。
したがって、問題は、子クラスが未知の要素を自分で解決できるようにする方法です。