WCF派生タイプとオープン/クローズド原理の違反
-
25-10-2019 - |
質問
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>();
}
}
ここで、既知のタイプの配列を返す静的クラスの既知のテープシェルパーを作成します(アセンブリをスキャンしてベースクラスの実装を見つけることにより...)
所属していません StackOverflow