我有一个我在WCF服务调用中使用的基类,
[KnownType(typeof(MyDerivedClass))]
public abstract class MyBaseClass {
//some properties
}
我从它派生,每次我得到我必须添加[KnownType(typeof(MyDerivedClass))]属性,每次我违反Open/Closed原则.无论如何派生这样的类在WCF中使用而不必每次都向父类添加属性?
最佳答案 您可以使用将返回已知类型的静态方法:
[DataContract]
[KnownType("GetKnownType")]
public class MyBaseClass
{
//some properties
private static Type[] GetKnownType()
{
return KnownTypesHelper.GetKnownTypes<MyBaseClass>();
}
}
现在创建一个静态类KnownTypesHelper,它将返回一个已知类型的数组(通过扫描程序集来查找基类的实现,例如…)