2011-11-29 61 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 –