WCF 服务会公开属性吗?

问题描述 投票:0回答:6

在实现 WCF 服务所需的接口中,我使用

[ServiceContract()]
属性声明主类,并使用
[OperationContract()]
声明任何公开的方法。

如何公开公共财产?谢谢

c# wcf
6个回答
22
投票

由于属性的 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();

14
投票

你不能。事情不是这样的。仅方法。


4
投票

属性是组件接口的面向对象方面。 WCF 是关于“服务”的,您必须考虑和设计组件之间的交互顺序。 由于往返成本、潜在昂贵的状态管理和版本控制挑战,面向对象不能很好地扩展到分布式场景(您的代码在多个服务器甚至多个进程上执行)。然而,面向对象仍然是设计服务内部的好方法,特别是当它们很复杂时。


4
投票
[DataContract]

属性,并且可以将属性声明为属性的

[DataMember]
属性。
    


2
投票


0
投票

接口声明如下所示。

string CapturePath { [OperationContract] get; [OperationContract(IsOneWay = true)] set; }

调用者像使用任何属性一样使用它,例如:

_captureThing.CapturePath = "test"; LogMessage(_captureThing.CapturePath);

© www.soinside.com 2019 - 2024. All rights reserved.