在WCF代理的当前程序集中重用类型

Mik*_*liy 10 wcf

VS WCF集成有很好的选项"在refrenced程序集中重用类型".问题是我需要相同的但是对于当前的组件.一些类型已在我的程序集中定义,我需要重用它们.

使用场景:

  1. 我有程序集,在这里有TypeA.
  2. 我添加了服务引用,其中一个方法返回与TypeA完全兼容的类型(属性,名称).
  3. 添加服务引用生成代理,但它在其中重新创建新的TypeA.

在第3步,我需要代理将返回TypeA.不是新的TypeA.

tom*_*asr 12

如果我理解你想要做什么,那么这是我经常遇到的一个场景,而且,WCF确实有一个不错的答案:只是不要使用SvcUtil/WS服务参考向导.

如果您已经在客户端定义了大部分合同类(因为您有共享程序集,或者因为您在项目中定义了相应的类),那么您可以继续执行下一步并导入完整的代码形式的服务合同或只是在客户端重新定义.

没有什么可以强迫你使用svcutil和朋友,只需定义你的界面并直接使用频道模型(即ChannelFactory <T>和朋友),或者,如果你更喜欢使用代理类,只需创建自己的ClientBase <T> - 派生类.它真的很容易,从长远来看它可以帮你省去麻烦.


小智 6

有一种简单的方法可以在客户端和服务之间共享类型,只需在添加服务引用之前向客户端添加对共享类型程序集的引用即可.

您可以在那里找到详细的场景和示例项目:

http://blog.walteralmeida.com/2010/08/wcf-tips-and-tricks-share-types-between-server-and-client.html