C# 使用T4 get程序集的反射
我想获得特定程序集中的所有类这是我的代码C# 使用T4 get程序集的反射,c#,reflection,t4,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#code一切正常时,我得到了我的程
var assembly=Assembly.GetExecutingAssembly();
var assemblies = assembly.GetTypes().Where(t => String.Equals(t.Namespace, "RepoLib.Rts.Web.Plugins.Profiler.Models", StringComparison.Ordinal)).ToArray();
当c#code一切正常时,我得到了我的程序集,但当写入
t4
文件时,我没有任何错误,但我的程序集计数是。在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();
var assembly=typeof().assembly;
var types=assembly.GetTypes()
.其中(t=>String.Equals(
t、 名称空间,
“RepoLib.Rts.Web.Plugins.Profiler.Models”,
字符串比较(序数)
.ToArray();
什么是?@ShahroozJefri:程序集中的任何类型,您都想从中获取所有类型。例如,它可能是
RepoLib.Rts.Web.Plugins.Profiler.Models
namespace中的类型之一。如果您不使用预处理的模板,并且希望获得有关T4模板所在的同一项目中的类型和类的信息,我建议不要使用反射。T4模板在设计时转换,因此$(SoutionDir)\bin\Debug\.dll引用的程序集可能来自您的上一次生成,并且已过时!您可能需要使用Visual Studio代码模型(请参见此处:)@Nico:谢谢您的评论。我没有意识到这一点。你怎么能不使用这种类型的?