从WCF服务生成单独的“模型”类

问题描述:

我希望能够为WCF Web服务中的每个Data Contract或XML类型生成单个类(每个文件一个类)。从WCF服务生成单独的“模型”类

我已阅读svcutil文档,除非我掠过一点太快,它看起来不像该工具支持此行为。

我想这样做的原因很简单 - 我试图从服务本身中分离服务的“模型”。有几个组件依赖于服务的类型,但不关心服务级别操作的细节,如加载/保存。我不喜欢这些组件需要依赖于包含各种调用和绑定逻辑的相同程序集的事实。

我知道svcutil(和VS集成)可以配置为在另一个程序集中使用预先存在的模型类。尽管这是一个鸡与鸡蛋的问题,我并不是真的想要手动编写50个类(至少现在)几乎与生成的类相同。当然,我必须添加名称空间和其他WCF属性的所有DataContract属性......这很痛苦。

我的最终目标是实际上有一个完全独立于服务模型的表示/域模型,但我还没有真正的循环。我认为,生成一个最终可以塑造成真正演示模型的人造模型将是一条开始沿着这条道路的好,快速和简单的方法。之后,我可以配置服务引用来使用单独生成的代理类,并开始充实一些更强大的功能。

可以这样做吗?是否有svcutil的选项可以让它为每个文件生成一个类?还是有另一种工具可以做到吗?

我不知道有什么工具可以在这个时候支持这个工具 - 如果它存在,我很想知道这样的工具!

如果您有周期这种攻击自己,你可以

  • 抢从URL服务的WSDL(或者从文件加载)
  • 解析出在嵌入式XML定义的XML类架构
  • 使用像T4模板或者其他机制来生成从这些XML架构的C#代码

这绝对是有可能的 - 可能不是竟然真的那么难 - 卜谁有时间做这件事? :-)