WCF服务是否公开属性?

时间:2009-05-05 10:28:10

标签: c# wcf

在实现WCF服务所需的接口中,我使用[ServiceContract()]属性声明了主类,并使用[OperationContract()]声明了任何公开的方法。

我如何公开公共财产?感谢

5 个答案:

答案 0 :(得分:19)

由于属性的 get 部分是一种方法,这在技术上可行,但如前面的答案/评论所述,这可能是不可取的;只是为了一般知识在这里张贴。

服务合同:

[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();

答案 1 :(得分:13)

你做不到。这不是它的工作原理。仅限方法。

答案 2 :(得分:4)

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

由于往返的成本,可能昂贵的状态管理和版本控制挑战,面向对象无法很好地扩展到分布式方案(您的代码在多个服务器上或甚至在多个进程中执行)。但是,OO仍然是设计服务内部的好方法,特别是如果它们很复杂的话。

答案 3 :(得分:4)

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

答案 4 :(得分:2)

请不要将属性公开为Web方法..这在HTTPS中不起作用。我有很大的时间来识别和解决这个问题。最好的方法是编写一个在WCF中返回的具体方法。