我希望在特定程序集中获取所有类,这是我的代码
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
文件时我没有任何错误但我的程序集数量是。
答案 0 :(得分:32)
在T4模板中,执行程序集不是你的,而是T4引擎中的一个。
要从程序集访问类型,您必须执行以下步骤:
将程序集的引用添加到模板中。把它放在它的顶部:
<#@ assembly name="$(SolutionDir)<Project>\bin\Debug\<Project>.dll" #>
导入程序集的命名空间。把它放在上一行的下方:
<#@ import namespace="<Project>.<Namespace>" #>
要访问此程序集中的类型,请选择其中一个并从中获取程序集:
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();