gpt4 book ai didi

具有对象继承的 WCF 序列化?

转载 作者:行者123 更新时间:2023-12-04 14:26:19 25 4
gpt4 key购买 nike

我有两个对象,一个在我们的企业级,另一个在我们的服务级。服务对象继承自企业。这是一个快速示例:

[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仍然是契约(Contract)的一部分,它的存在将是公开的。但只有标记为 [DataMember] 的成员将发布。

一种选择(删除继承)是使用单独的 DTO 用于序列化目的,并在 DTO 版本和实际版本之间进行转换 - 但这需要额外的工作。

关于具有对象继承的 WCF 序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/658361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com