WCF优雅使用 KnownType标记的方法
2017-05-10 11:03
211 查看
[KnownType("DerivedTypes")] [DataContract] publicabstractclassTaskBase { //otherclassmembershere privatestaticType[]DerivedTypes() { returntypeof(TaskBase).GetDerivedTypes(Assembly.GetExecutingAssembly()).ToArray(); } }
用于反射实现KnowType而不用全部标记。无论是参数还是作为结果返回还是作为其中的一个成员都要继承此类
publicstaticIEnumerable<Type>GetDerivedTypes(thisTypebaseType,Assemblyassembly) { vartypes=fromtinassembly.GetTypes() wheret.IsSubclassOf(baseType) selectt; returntypes; }
这是上一个代码块中引用的GetDerivedTypes的方法实现
将TaskBase作为base类继承到序列化的类中,比如我有类Foo:
[DataContract] publicclassFoo { [DataMember] publicobjectHello{get;set;} }
[DataContract] publicclassBar { [DataMember] publiclongId{get;set;} }
[code]
如果仅仅是Bar被序列化传递,那么Bar集成于
TaskBase就可以了,如果是
Foo的Hello成员是Bar类的话,那么两个类都要继承,即:
[DataContract] publicclassFoo:TaskBase { [DataMember] publicobjectHello{get;set;} } [DataContract] publicclassBar:TaskBase { [DataMember] publiclongId{get;set;} }
相关文章推荐
- C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- 使用匿名方法、迭代器和局部类书写优雅的C#代码(一)(翻译)
- 使用匿名方法、迭代程序和局部类来创建优雅的代码
- 详解如何获取客户端使用WCF服务的用户数,通过WCF取在线用户数量的方法
- JPA中各注释标记的含义及使用方法
- C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- 在WCF中使用SoapHeader进行验证的两种实现方法
- WCF服务在JavaScript中使用ASP.NET的AJAX方法
- COM(VB/VBA/Script)利用服务标记调用WCF服务之四:使用配置文件
- 基于TCP协议绑定的WCF双工回调的一般使用方法
- C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- 不能使用asp标记时的解决方法
- Vista上无法使用WCF的处理方法
- WCF服务在JavaScript中使用ASP.NET的AJAX方法
- CODE:使用匿名方法,让worker线程中更新UI控件的代码更优雅
- C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- 应使用 CLSCompliantAttribute 来标记 "----",其值应为 true 解决方法
- COM(VB/VBA/Script)利用服务标记调用WCF服务之二使用MEX契约
- WCF 提高传输数据性能方法之一 (使用压缩)
- ads使用方法---在次做个标记