T4代码生成:当前项目中的访问类型

使用T4代码生成,是否可以访问当前项目中定义的类型?

例如,如果我有一个接口,我想将其实现委托给另一个类,即

interface IDoSomething { public void do_something(); } class DoSomethingImpl : IDoSomething { public void do_something() { // implementation... } } class SomeClass : IDoSomething { IDoSomething m_doSomething = new DoSomethingImpl(); // forward calls to impl object public void do_something() { m_doSomething.do_something(); } } 

我想通过代码生成自动化SomeClass的呼叫转发; 这可能吗?

虽然这不能解决锁定问题(虽然我听说过VS2010会这样做),但您可以尝试将dll复制到临时位置并使用复制的程序集。

 <#@ template debug="false" hostspecific="false" language="C#" #> <#@ output extension=".txt" #> <#@ import namespace="System.Reflection" #> <#@ import namespace="System.IO" #> <# var newFileName = System.IO.Path.GetTempFileName(); System.IO.File.Copy(@"C:\Development\CustomAssembly.dll",newFileName,true); var assembly = Assembly.LoadFrom(newFileName); var type = assembly.GetType("CustomAssembly.DummyClass"); #> <#=newFileName#> <#=type#>