我有两个对象,一个在我们的企业级别,另一个在我们的服务级别.服务对象继承自企业.这是一个简单的例子:
[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属性.这是唯一的方法吗?谢谢
你通过添加一个[KnownType(typeof(ServiceObject))]
来处理继承EnterpriseBaseObject
- 但是,EnterpriseBaseObject
它仍然是合同的一部分,它的存在将是公开的.但只有标记的成员[DataMember]
才会发布.
一个选项(删除继承)是为了序列化目的而有一个单独的DTO,并且在DTO版本和实际版本之间进行转换 - 但这会产生额外的工作.