5

我希望能够为 WCF Web 服务中的每个数据协定或 XML 类型生成单独的类(每个文件一个类)。

我已经阅读了svcutil文档,除非我浏览的速度太快,否则该工具似乎不支持这种行为。

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

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

我的最终目标是真正拥有一个完全独立于服务模型的表示/域模型,但我还没有真正的周期。我认为生成一个最终可以塑造成真正的演示模型的人造模型将是开始这条道路的一种很好、快速和简单的方法。之后,我可以配置服务引用以使用单独生成的代理类,并开始充实一些更健壮的东西。

这可以做到吗?是否有选项svcutil可以让它为每个文件生成一个类?还是有其他工具可以做到这一点?

4

1 回答 1

0

我目前不知道有任何工具可以支持这一点——我很想亲自了解这样的工具,如果它存在的话!

如果你有自己的周期来攻击这个,你可以

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

这绝对是可能的——甚至可能不是那么难——但谁有时间去做呢?:-)

于 2010-03-02T17:08:55.827 回答