我有一个具有重要属性的datacontract。 例如,在以下代码中:
[DataMember]
[Description("My Description")]
public string Name { get; set; }
我希望在客户端代理上自动生成Description属性。
除了大规模重复之外,还有其他解决方案或解决方法吗?
非常感谢!
答案 0 :(得分:1)
你没有,不是真的。请记住,您没有传递对象的实例,而是传递文本消息。
如果真的很重要,那么你可以放弃生成的代理类并分享数据对象和契约的实现,但是这需要更多的工作,当然你冒着客户端和服务器失效的风险同步。
如果您想尝试,然后将您的合同和操作界面放入一个单独的程序集,使用公共修饰符,请尝试以下
Binding binding = new BasicHttpBinding(); // or which one you
EndpointAddress endpoint =
new EndpointAddress("endpointUrl");
ChannelFactory<IServiceInterface> channelFactory =
new ChannelFactory<IServiceInterface>(binding, endpoint);
IServiceInterface client = channelFactory.CreateChannel();
MyDataType result = client.Operation(myOtherDataType);
((IClientChannel)client).Close();
答案 1 :(得分:0)
您可能需要深入研究服务描述(以及生成的WSDL文件)的创建,以便以客户端可以检测并重新创建它们的形式传递这些属性。接下来是不可能的,真的。
另外:请记住,WCF旨在实现互操作性 - Java或PHP客户端应该如何处理这些属性呢?
面向服务的编程与“常规”基于组件或对象的系统完全不同。您所做的只是以文本或二进制格式传递消息。这确实限制了在处理基于.NET的对象和组件时可能习惯的某些事情 - 它在SOA世界中的工作方式不同。
马克