2

我有一个具有重要属性的数据合同。例如,在以下代码中:

[DataMember]
[Description("My Description")]
public string Name { get; set; }

我希望在客户端代理上自动生成 Description 属性。

除了大量重复之外,还有什么解决方案或解决方法吗?

非常感谢!

4

2 回答 2

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();
于 2009-07-22T08:33:56.493 回答
0

您可能必须深入挖掘服务描述(以及生成的 WSDL 文件)的创建,以便以客户端可以检测和重新创建它们的形式传递这些属性。几乎不可能,真的。

另外:请记住,WCF 被设计为可互操作的——Java 或 PHP 客户端应该如何处理这些属性,真的吗?

面向服务的编程与“常规的”基于组件或基于对象的系统完全不同。您所做的基本上就是以文本或二进制格式传递消息。这确实限制了您在处理基于 .NET 的对象和组件时可能习惯的某些事情——它在 SOA 世界中的工作方式不同。

马克

于 2009-07-22T08:46:33.020 回答