当前位置:  开发笔记 > 编程语言 > 正文

WCF序列化与对象继承?

如何解决《WCF序列化与对象继承?》经验,为你挑选了1个好方法。

我有两个对象,一个在我们的企业级别,另一个在我们的服务级别.服务对象继承自企业.这是一个简单的例子:

[DataContract]
public class EnterpriseObject{
     [DataMember]
     int ID{get; set;}

     string InternalUse{get; set;}
}

[DataContract]
public class ServiceObject: EnterpriseBaseObject{
     [DataMember]     
     string Address{get; set;}
}

是否有可能只在序列化中公开ServiceObject(具有EnterpriseObject的继承属性)?我不希望客户端看到列为选项的企业对象?正如您在示例中所看到的,未为InternalUser属性设置DataMember属性.这是唯一的方法吗?谢谢



1> Marc Gravell..:

你通过添加一个[KnownType(typeof(ServiceObject))]来处理继承EnterpriseBaseObject- 但是,EnterpriseBaseObject它仍然是合同的一部分,它的存在将是公开的.但只有标记的成员[DataMember]才会发布.

一个选项(删除继承)是为了序列化目的而有一个单独的DTO,并且在DTO版本和实际版本之间进行转换 - 但这会产生额外的工作.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有