2011-11-29 35 views
3

我有我的WCF服务调用使用一个基类,WCF派生类型和侵犯的开/关原则

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

我从中获得每次我得到一次我必须添加[KnownType(typeof(MyDerivedClass))]属性每次我都违反了Open/Closed原则。无论如何,派生这样的类用于WCF,而不必每次都向父类添加属性?

回答

2

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

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

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

现在创建一个静态类KnownTypesHelper将返回已知类型的阵列(通过扫描组件,以找到例如基类的实现。 ..)

+0

作品像一个魅力+1 –