4

我有一个在 WCF 服务调用中使用的基类,

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

我从中派生,每次派生时都必须添加[KnownType(typeof(MyDerivedClass))]属性,并且每次我都违反了开放/封闭原则。反正有没有派生这样的类以在 WCF 中使用,而不必每次都向父类添加属性?

4

1 回答 1

2

您可以使用将返回已知类型的静态方法:

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

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

现在创建一个静态类 KnownTypesHelper,它将返回一个已知类型的数组(例如,通过扫描程序集来查找基类的实现......)

于 2011-11-29T08:16:57.483 回答