【问题标题】:Using T4 templates to generate ViewModels使用 T4 模板生成 ViewModel
【发布时间】:2010-11-03 12:48:22
【问题描述】:

在我看来,这听起来是一个绝妙的主意。使用 EnvDTE 也可以做到这一点,那么为什么没有更多可用的示例呢?

也许我错过了这样做的一个缺点......?

任何指向良好 T4 和 EnvDTE 资源的指针都会很棒。 :)

【问题讨论】:

  • 从什么生成它们?
  • SLaks: 从我的模型中... 所以我可以依靠代码生成来生成我的视图模型的无聊部分(例如暴露属性)

标签: t4 envdte


【解决方案1】:

您可能很少看到它,因为它实际上很难很好地实施。一段时间以来,我一直在使用 T4 从 WCF DTO 生成模型类,以用于 WinForms MVP 变体,并且花了相当长的时间才能使其正常工作。

使用类作为模板的“数据”源本身就相当困难。您需要选择使用反射(或类似的 API)来读取编译后的 IL 或 CodeDom 来读取源代码。如果您选择使用已编译的程序集,您将需要解决文件锁定和加载引用程序集等问题。如果您选择使用源代码,则需要处理潜在的不可编译代码。

一旦您做出决定,复制属性将是您需要做的最简单的事情。您还需要决定源类上的哪些接口和属性(如果有)应该重新实现/复制到生成的类。根据你如何实现验证之类的事情,这可能会引发各种小而挑剔的问题。关于如何处理继承层次结构和对其他模型类的引用,还有很多有趣的决定要做。

以上所有内容都是可以解决的,但一刀切的方法很难实施。回到你问题的“示例”部分,还有一个潜在的问题是做这么多工作却没有得到报酬。我很想能够分享我为模型生成创建的 T4,但它属于我的雇主,我有更好的业余时间来做,而不是重新实现在网络上发布的方法......

【讨论】:

    【解决方案2】:

    使用类作为模板的“数据”源非常困难

    这是错误的。看asp mvc 3 脚手架。 http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/

    【讨论】:

    • 请将您帖子的相关部分添加到您的答案中。链接可能会失效。
    猜你喜欢
    • 2013-10-03
    • 2011-10-28
    • 1970-01-01
    • 2017-06-06
    • 2017-01-29
    • 1970-01-01
    • 2011-10-16
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多