反思与T4 GET组件(Reflection with T4 get assemblies)

2019-08-17 00:32发布

我想获得的所有类的特定组件,这是我的代码

 var assembly=Assembly.GetExecutingAssembly();

 var assemblies = assembly.GetTypes().Where(t => String.Equals(t.Namespace, "RepoLib.Rts.Web.Plugins.Profiler.Models", StringComparison.Ordinal)).ToArray();

在C#代码的所有事情是确定的,并让我的组件,但是当在写t4文件我没有任何错误,但我的组件数是。

Answer 1:

在T4模板执行的程序集不你的,但一个从T4发动机。

从您的组件访问类型,你必须执行以下步骤:

  1. 参考你的组件添加到模板。 放,在它的顶部:

     <#@ assembly name="$(SolutionDir)<Project>\bin\Debug\<Project>.dll" #> 
  2. 导入程序集的命名空间。 把前一行下的某个地方:

     <#@ import namespace="<Project>.<Namespace>" #> 
  3. 要访问的类型在这个大会,选择其中之一,并从它那里得到大会:

     var assembly = typeof(<Type in assembly>).Assembly; var types = assembly.GetTypes() .Where(t => String.Equals( t.Namespace, "RepoLib.Rts.Web.Plugins.Profiler.Models", StringComparison.Ordinal)) .ToArray(); 


文章来源: Reflection with T4 get assemblies
标签: c# reflection t4