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

wcf服务是否公开属性?

  •  11
  • pistacchio  · 技术社区  · 16 年前

    在实现wcf服务所需的接口中,我用 [ServiceContract()] 属性和任何公开的方法 [OperationContract()] .

    我怎样才能公开公共财产?谢谢

    5 回复  |  直到 9 年前
        1
  •  13
  •   John Saunders    16 年前

    你做不到。事情不是这样的。仅限方法。

        2
  •  19
  •   Steve Dignan    16 年前

    自从 一个属性的一部分是一种方法,这在技术上是可行的,但是,正如前面的回答/评论中所提到的,这可能并不可取;只需在这里发布它作为一般知识。

    服务合同:

    [ServiceContract]
    public interface IService1
    {
        string Name
        {
            [OperationContract]
            get;
        }
    }
    

    服务:

    public class Service1 : IService1
    {
        public string Name
        {
            get { return "Steve"; }
        }
    }
    

    要从客户端代码访问:

    var client = new Service1Client();
    var name = client.get_Name();
    
        3
  •  4
  •   Pontus Gagge    16 年前

    属性是组件接口的面向对象方面。WCF是关于 服务 ,您必须考虑并设计组件之间的交互序列。

    由于往返的成本、潜在的昂贵的状态管理和版本控制挑战,面向对象不能很好地扩展到分布式场景(代码在多个服务器上甚至在多个进程中执行)。然而,oo仍然是设计服务内部的一种好方法,特别是在它们很复杂的情况下。

        4
  •  4
  •   Jon B    12 年前

    您可以公开属性,但必须使用 [DataContract] 属性,并可以将属性声明为 [DataMember] 属性。

        5
  •  2
  •   KKR    11 年前

    请不要将属性公开为Web方法..这在https中不起作用。我花了很多时间来确定和解决这个问题。最好的方法是编写一个具体的方法以在wcf中返回。