gpt4 book ai didi

c# - 当我在 WCF 中使用类/属性时,我应该将它们装饰为 DataContract/DataMember 吗?

转载 作者:行者123 更新时间:2023-11-30 14:43:53 25 4
gpt4 key购买 nike

我有一个包含对象和数据访问代码的框架。此对象使用 NHibernate 映射到数据库。

例如我的框架有类 Customer 和 Order:

public class Customer
{
private Guid _id;
private string _name;
private IList<Order> _orders;

public properties...
}


public class Order
{
private Guid _id;
private string _orderNumber;

public properties...
}

我还有一个带有 PersistCustomer 方法的 WCF 服务。像这样:

[ServiceContract]
public interface ICustomerService
{

[OperationContract]
void PersistCustomer(Customer customer);
}

此 WCF 引用了我的框架库。

我已经为 WCF 服务创建了一个客户端应用程序(一个简单的控制台应用程序)并且它可以运行!

我无法理解的主要问题是:为什么不将框架中的类装饰为 DataContract 并将它们的属性装饰为 DataMembers 就可以工作?我应该装饰它们吗?

谢谢

最佳答案

你不必,但你应该。特定的契约声明允许您控制类在网络上的序列化方式,允许您隐藏属性、重新排序消息中的属性、使某些属性成为可选属性、某些属性成为必需属性,以及控制数据契约的命名空间。

如果您不这样做,那么 .NET 会对它做出一个不错的猜测,但在某些时候您将需要控制,例如,如果您向类添加了一个新属性但希望旧客户端工作,您可以将其作为一个数据契约(Contract)中的可选成员,老客户将继续工作。

关于c# - 当我在 WCF 中使用类/属性时,我应该将它们装饰为 DataContract/DataMember 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1346920/

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