代码之家  ›  专栏  ›  技术社区  ›  dcw

.NET WCF服务中的属性

  •  1
  • dcw  · 技术社区  · 15 年前

    在WCF服务中使用属性时遇到问题。我可以将接口中的属性定义为:

    [ServiceContract(Namespace = "http://some-url.com/")]
    interface ISomeInterface
    {
      [OperationContract]
      int SomeMethod(string someArg);
    
      int SomeProperty
      {
        [OperationContract]
        get;
      }
    }
    

    但是当客户端使用时,该属性的基础方法 get_SomeProperty() 是公开的,而不是作为getter属性。有没有办法让客户把它视为一种财产?(或者我必须放弃在服务合同中使用财产吗?)

    4 回复  |  直到 12 年前
        1
  •  3
  •   marc_s    15 年前

    在WCF中,您所能做的就是在客户机和服务器之间发送消息。

    客户机从来没有对服务器对象的直接RPC样式访问权,因此,您不能呈现属性或类似的内容。

    您所能做的就是序列化消息并将它们发送到 [OperationContract] 在他们身上。我相信这不能应用于属性的setter方法。

    马克

        2
  •  4
  •   John Saunders    15 年前

    世界上任何地方都没有SOAP Web服务支持属性。无法在WSDL中描述属性。Web服务只涉及操作(方法)。

        3
  •  1
  •   Justin Niessner    15 年前

    Web服务不公开属性。它只公开可以由客户机调用的方法(Web服务是无状态的……因此拥有属性是没有意义的,因为它们总是初始值)。

        4
  •  1
  •   Michael Earls    12 年前

    使用datamember属性。

    [DataMember]
    int SomeProperty
    {
       get;
    }
    

    您必须确保对象是可序列化的。

    这将为您的对象创建一个复杂的类型,并添加一个这样的元素…

    <xs:element minOccurs="0" name="SomeProperty" type="xs:int" /> 
    
    推荐文章