2

我有一个公开各种类的 WCF。我在一些属性上应用了 DataAnnotation 属性。

我也希望它们在消费者项目中生成,有没有办法做到这一点?

4

1 回答 1

3

不。WCF 是一个基于消息的系统,因此连接您的客户端和您的服务的只是网络上的 XML 序列化消息(及其格式)。

创建代理时,WCF 运行时所能做的就是重新创建数据结构,以便在 XML 序列化客户端类之一时,线路上的表示将与服务器端类相同。

客户端无法“触及”服务器的内部并找出有关 .NET 特定内容的信息,例如数据注释......

也就是说:如果您控制通信的两端,例如您同时编写服务器和客户端,则可以采用另一种方法:

  • 使用您的服务和数据合同(只是合同)创建一个单独的类库程序集
  • 在添加服务引用之前,从您的服务器代码和客户端项目中引用该公共共享程序集
  • 添加服务引用时,默认情况下,WCF 运行时将重用现有类型;因此,如果它向您的服务添加服务引用,并且您需要一个数据类MyData并且该类存在于引用的共享程序集中,WCF 运行时将重用它(而不是重新创建一个新的、单独的客户端代理类)

使用这个“技巧”,您可以在服务和客户端之间共享某些类(例如数据类) - 包括其上的所有 .NET 属性

于 2011-03-01T06:52:50.297 回答