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>();
}
}
现在创建一个静态类Newtypeshelper,该类别将返回一系列已知类型(通过扫描汇编以查找基类的实现...)
不隶属于 StackOverflow