Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用T4 get程序集的反射_C#_Reflection_T4 - Fatal编程技术网

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:谢谢您的评论。我没有意识到这一点。你怎么能不使用这种类型的?