gpt4 book ai didi

c# - 是否可以在 SOAP Web 服务中创建只读元素?

转载 作者:行者123 更新时间:2023-11-30 15:50:08 24 4
gpt4 key购买 nike

我有一个定义了只读属性的类。在我的代码中,我将其定义为仅具有 setter/getter 的属性。

我希望能够通过网络服务来回发送这个对象。当我在服务中调用“Get”方法时,它会在服务端填充一个值。定义此属性后,我不希望 Web 服务的使用者能够设置/更改此属性。

当我将对此 Web 服务的引用添加到项目时,该对象的属性序列化了几种不同的方式,具体取决于我尝试在服务端定义对象的方式:

  • internal setter:在 WSDL 中创建属性。 Visual Studio 为该属性生成一个类,其中包含 getter 和 setter。
  • no setter:不在 WSDL 中创建属性。 Visual Studio 显然根本没有定义这个属性。
  • 只读公共(public)成员变量 - 不在 WSDL 中创建属性。同样,Visual Studio 不会对此属性执行任何操作,因为它不知道它。

允许 Web 服务的使用者为此属性设置一个值不会造成任何伤害。如果设置了该值,Web 服务端将忽略它。如果消费者不能更改/设置属性开始,我更愿意。

有没有办法将属性定义为只读?现在我们正在为 Web 服务使用 C#/.NET 2.0,并且(至少现在)我们可以控制该服务的所有使用者,因此我可以根据需要尝试更改配置,但我更愿意只更改Web 服务上的东西,而不是消费者。

最佳答案

我可能是错的,但我认为这里的问题是序列化是如何工作的——为了反序列化一个对象,序列化程序创建一个空对象,然后设置这个对象的所有属性——这就是为什么你需要一个属性 setter 包含在连载中。客户端代码与反序列化器具有相同的对象“接口(interface)”。

关于c# - 是否可以在 SOAP Web 服务中创建只读元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/915672/

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