質問

WCFサービスコールで使用する基本クラスがあります。

[KnownType(typeof(MyDerivedClass))]
public abstract class MyBaseClass {
   //some properties
}

私はそれから派生し、私が導き出すたびに私は追加する必要があります [KnownType(typeof(MyDerivedClass))] 属性と私が行うたびに、私は違反します 開いて/閉じています 原理。とにかく、WCFで使用するためにこのようなクラスを導き出し、毎回親クラスに属性を追加する必要はありませんか?

役に立ちましたか?

解決

既知のタイプを返す静的メソッドを使用できます。

[DataContract]
[KnownType("GetKnownType")]
public class MyBaseClass
{
    //some properties

    private static Type[] GetKnownType()
    {
        return KnownTypesHelper.GetKnownTypes<MyBaseClass>();
    }
}

ここで、既知のタイプの配列を返す静的クラスの既知のテープシェルパーを作成します(アセンブリをスキャンしてベースクラスの実装を見つけることにより...)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top