.NET WCF服务中的属性
在WCF服务中使用属性时遇到问题。我可以在界面中将属性定义为:.NET WCF服务中的属性,.net,wcf,web-services,.net,Wcf,Web Services,在WCF服务中使用属性时遇到问题。我可以在界面中将属性定义为: [ServiceContract(Namespace = "http://some-url.com/")] interface ISomeInterface { [OperationContract] int SomeMethod(string someArg); int SomeProperty { [OperationContract] get; } } 但是当客户端使用该属性时,该属性的
[ServiceContract(Namespace = "http://some-url.com/")]
interface ISomeInterface
{
[OperationContract]
int SomeMethod(string someArg);
int SomeProperty
{
[OperationContract]
get;
}
}
但是当客户端使用该属性时,该属性的底层方法
get\u SomeProperty()
将被公开,而不是作为getter属性。有没有办法告诉客户将其视为财产?(或者我必须放弃在服务合同中使用属性吗?世界上任何地方的SOAP web服务都不支持属性。无法在WSDL中描述属性。Web服务只涉及操作(方法)。世界上任何地方的SOAP Web服务都不支持属性。无法在WSDL中描述属性。Web服务只涉及操作(方法)。在WCF中,您所能做的就是在客户端和服务器之间发送消息
客户端从来没有直接访问服务器对象的rpc样式的权限-因此,您不能显示属性或类似的内容
您所能做的就是序列化消息,并将它们发送到带有[OperationContract]
的方法。我相信这不能应用于属性的setter方法
Marc在WCF中,您所能做的就是在客户端和服务器之间发送消息 客户端从来没有直接访问服务器对象的rpc样式的权限-因此,您不能显示属性或类似的内容 您所能做的就是序列化消息,并将它们发送到带有
[OperationContract]
的方法。我相信这不能应用于属性的setter方法
MarcWeb服务不公开属性。它只公开客户端可以调用的方法(Web服务是无状态的…因此拥有属性真的没有意义,因为它们总是初始值)。Web服务不公开属性。它只公开可由客户端调用的方法(Web服务是无状态的……因此拥有属性真的没有意义,因为它们总是初始值)。使用DataMember属性
[DataMember]
int SomeProperty
{
get;
}
您必须确保对象是可序列化的
这将为您的对象创建一个复杂类型,并添加一个元素,如
<xs:element minOccurs="0" name="SomeProperty" type="xs:int" />
使用DataMember属性
[DataMember]
int SomeProperty
{
get;
}
您必须确保对象是可序列化的
这将为您的对象创建一个复杂类型,并添加一个元素,如
<xs:element minOccurs="0" name="SomeProperty" type="xs:int" />
谢谢你的回答,这很有道理。“不”是一个非常有用的答案。:-)谢谢你的回答,这很有道理。“不”是一个非常有用的答案。:-)描述Web服务使用的类型系统。WCF使用对象上的DataContract
和DataMember
属性支持这一点。描述Web服务使用的类型系统。WCF使用对象上的DataContract
和DataMember
属性支持这一点。