我在使用WCF服务中的属性时遇到问题。我可以在界面中定义一个属性:
[ServiceContract(Namespace = "http://some-url.com/")]
interface ISomeInterface
{
[OperationContract]
int SomeMethod(string someArg);
int SomeProperty
{
[OperationContract]
get;
}
}
但是当客户端使用时,属性的基础方法get_SomeProperty()
被公开,而不是作为getter属性。有没有办法告诉客户将其视为财产? (或者我必须放弃在服务合同中使用属性吗?)
答案 0 :(得分:4)
世界上任何地方都没有SOAP Web服务支持属性。无法在WSDL中描述属性。 Web服务仅与操作(方法)有关。
答案 1 :(得分:3)
在WCF中,您所能做的就是在客户端和服务器之间发送消息。
客户端永远不会对服务器对象进行直接的rpc样式访问 - 因此,您无法表面属性或类似的东西。
您所能做的就是序列化邮件并将其发送到方法[OperationContract]
。我相信这不适用于属性的setter方法。
马克
答案 2 :(得分:1)
Web服务不公开属性。它只暴露了客户端可以调用的方法(Web服务是无状态的......所以具有属性实际上没有意义,因为它们始终是初始值)。
答案 3 :(得分:1)
使用DataMember属性。
[DataMember]
int SomeProperty
{
get;
}
您必须确保您的对象可序列化。
这将为您的对象创建一个复杂类型,并添加一个像这样的元素......
<xs:element minOccurs="0" name="SomeProperty" type="xs:int" />