在实现 WCF 服务所需的接口中,我使用
[ServiceContract()]
属性声明主类,并使用 [OperationContract()]
声明任何公开的方法。
如何公开公共财产?谢谢
由于属性的 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();
你不能。事情不是这样的。仅方法。
属性是组件接口的面向对象方面。 WCF 是关于“服务”的,您必须考虑和设计组件之间的交互顺序。 由于往返成本、潜在昂贵的状态管理和版本控制挑战,面向对象不能很好地扩展到分布式场景(您的代码在多个服务器甚至多个进程上执行)。然而,面向对象仍然是设计服务内部的好方法,特别是当它们很复杂时。
[DataContract]
属性,并且可以将属性声明为属性的
[DataMember]
属性。
接口声明如下所示。
string CapturePath
{
[OperationContract]
get;
[OperationContract(IsOneWay = true)]
set;
}
调用者像使用任何属性一样使用它,例如:
_captureThing.CapturePath = "test";
LogMessage(_captureThing.CapturePath);