用T4反射获得装配

时间:2013-02-16 11:46:28

标签: c# reflection t4

我希望在特定程序集中获取所有类,这是我的代码

 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文件时我没有任何错误但我的程序集数量是。

1 个答案:

答案 0 :(得分:32)

在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();