我的WCF ServiceContract具有相同的属性:
int P1 { [OperationContract()] get; [OperationContract()] set; }
我在客户端上需要相同但生成的协议给了我:
get_P1()和set_P1(int)方法所以我每次都需要手动创建另一个类接口:
int P1 { get { return get_P1() } ; set { et_P1(value) ; }
如何自动创建类?
原因:我唯一想编辑的是界面和实现,以及我希望自动生成的所有其他内容。
答案 0 :(得分:2)
您可以更改工具(svcutil或“添加服务参考”)将如何生成合同,但这并不简单。您需要实现WSDL Import和代码生成扩展,然后将其连接到工具以在两个方法和属性之间进行转换。 http://blogs.msdn.com/b/carlosfigueira/archive/2011/10/18/wcf-extensibility-wsdl-import-and-code-generation-extensions.aspx上的帖子提供了有关这些扩展的一些信息。
另一种选择是在服务器和客户端之间共享合同 - 而不是让工具生成客户端代理,而只需在客户端项目中复制(或引用)合同文件。
所以,你可以这样做。但我不认为你应该这样做。属性通常与对象状态的简单访问器相关联。拥有[OperationContract]
属性意味着访问属性的行为现在具有完整网络往返的潜在成本,以及它所需的任何附加序列化/打包/框架。方法没有那个隐式要求,因为它们可以(并且经常)执行多个任务,包括调用其他方法。即使此时在属性访问器中签订操作合同也是有意义的,几乎没有人对代码不熟悉,因此将来可能会导致维护问题。