【发布时间】:2011-03-23 06:05:28
【问题描述】:
我已经为我们的团队构建了一个用于代码生成(C#、VS 08)的插件。
如果我单击解决方案资源管理器中的文件,插件会创建一个新的菜单项。 在那里我可以选择生成 2 个文件的目标测试项目。
对于代码生成过程,我需要解决方案资源管理器中所选项目的信息(如接口、类声明的泛型类型)。
我的源类看起来像
public class CustomerLogic : BaseBL<T1, T2, T3>, ICustomerBL
生成的容器类
public class CustomerContainer : BaseBLDummyContainer<T1, T2, T3>
生成的虚拟类看起来像
public class CustomerBLDummy : BaseBLDummy<T1, T2, T3, CustomerContainer>, ICustomer
我是怎么意识到的?
我创建了两个模板(容器和虚拟),将占位符放在空格中,使两个模板文件看起来像
容器模板
public class $Classname$ : BaseBLDummyContainer<$T1$, $T2$, $T3$>
虚拟模板
public class $Classname$ : BaseBLDummy<$T1$, $T2$, $T3$, $TContainer$>$, TInterface$
为了生成模板,我编写了一些代码
- 创建文件
- 将它们添加到目标项目中
- 根据需要创建方法
你可以看到,“很多”工作只是为了生成一些代码。
- 现在我考虑使用 T4 的一代是否更适合我的情况?
- T4 机制有什么好处吗? (我只看到一些 T4 示例与 EF 或与数据库相关的生成相结合)
- 我应该更灵活地使用 T4 吗?
非常感谢。
【问题讨论】:
标签: c# visual-studio-2008 code-generation t4