在我看来,这听起来像是一个极好的主意。使用Envdte也可以实现这一目标,那么为什么在此可用的情况下没有更多示例呢?

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

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

有帮助吗?

解决方案

您可能看不到太多,因为它实际上很难实现。我一直在使用T4从WCF DTO生成模型类,以在Winforms MVP变体中使用一段时间,并且花了很多时间才能使其正常工作。

将类作为模板的“数据”源在本身上非常困难。您需要在使用反射(或类似API)读取编译IL或编码以读取源代码的情况下进行选择。如果您选择使用编译的组件,则需要解决文件锁定和加载引用的程序集等问题。如果您选择使用源代码,则需要处理潜在的不兼容代码。

一旦做出决定,复制属性将是您需要做的最琐碎的事情。您还需要决定将源类中的哪些接口和属性(如果有)重新成熟/复制到生成的类。根据您如何实施诸如验证之类的事情,这可能会引起各种各样的挑剔问题。围绕如何处理继承层次结构和对其他模型类的引用也有很多有趣的决定。

以上所有内容都是可寻址的,但是一种一定程度的方法将很难实施。回到问题的“示例”一部分,还有一个潜在的问题,即在不为此付费的情况下做很多工作。我很想能够分享我为模型生成创建的T4,但它属于我的雇主,与我的业余时间相比,我比重新实现在网络上发布的方法更好。

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top