我建立的代码生成一个加载项(C#,VS 08)为我们的团队。VsAddin或T4代码生成(VS 2008)
该插件创建一个新的菜单项,如果我在Solution Explorer中单击文件。 在那里我可以选择一个目标测试项目,其中生成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
我是怎么意识到的?
我创建了两个模板(容器和虚拟),把占位符的空间,因此两个模板文件看起来像
Containertemplate
public class $Classname$ : BaseBLDummyContainer<$T1$, $T2$, $T3$>
Dummytemplate
public class $Classname$ : BaseBLDummy<$T1$, $T2$, $T3$, $TContainer$>$, TInterface$
要生成模板我已经writen一些代码来
- 创建的文件
- 将它们添加到目标项目
- 如果需要
可以看到,工作的“批”只有做生成一些代码创建方法。
- 现在我认为如果T4代是更好的解决方案,我的情况?
- 我有T4机制的一些好处吗? (我只看到一些T4结合EF或数据库相关的样本)
- 我应该用T4更灵活吗?
非常感谢。
感谢您的简短解释。我会玩一点。我下载了需要的东西,并立即开始。我首先想到我编写了一些代码来从源文件和模板中收集所有需要的信息,将它们放入数据结构中,将其导入模板文件并引用模板中的字段。 – Khh 2010-07-31 19:06:04