在我看来,这听起来像是一个极好的主意。使用EnvDTE也可以实现这一点,那么为什么没有更多的例子呢?
也许我错过了这样做的缺点......?
任何指向优秀T4和EnvDTE资源的指针都会很棒。 :)
答案 0 :(得分:3)
你可能看不到它,因为它实际上很难很好地实现。我一直在使用T4从WCF DTO生成模型类,以便在WinForms MVP变体中使用一段时间,并且需要相当长的时间才能使其正常工作。
使用类作为模板的“数据”源非常困难。您需要选择使用反射(或类似的API)来读取已编译的IL或CodeDom来读取源代码。如果选择使用已编译的程序集,则需要解决文件锁定和加载引用的程序集等问题。如果您选择使用源代码,则需要处理潜在的无法编译代码。
一旦你做出了这个决定,复制属性将是你需要做的最微不足道的事情。您还需要决定源类上的哪些接口和属性(如果有)应该重新实现/复制到生成的类。根据你实现验证的方式,这会引发各种微不足道的挑剔问题。关于如何处理继承层次结构和对其他模型类的引用,还有很多有趣的决策。
以上所有内容都是可以解决的,但是一个通用的方法很难实现。回到问题的“示例”部分,还有一个潜在的问题,就是在没有得到报酬的情况下做了那么多工作。我希望能够分享我为模型生成而创建的T4,但它属于我的雇主,我有更多的事情要做我的业余时间,而不是重新实现在网上发布的方法... < / p>
答案 1 :(得分:0)
使用类作为模板的“数据”来源非常困难
这是错误的。看看asp mvc 3脚手架。 http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/