如果我在c#的字符串中有类型名,我如何获得对象的公共属性?



我有一个长长的c#对象列表,我想通过mvc脚手架编写一系列"单元测试存根"。

我希望能够加载对象的元数据,并通过对象的公共属性循环。

然而,在上下文中,我不想(在某些情况下不能)创建它们的对象的实际副本。

是否有一种方法在c#中读取一个对象的公共属性,如果我只有一个字符串类型的名称?

我试图在T4模板中加载属性

例如:

<#@ Template Language="C#" HostSpecific="True" Inherits="DynamicTransform" #>
<#@ assembly name="C:wwwmyprojectWebbinMyCustomAssembly.dll" #>
<#@ Output Extension="cs" #>
<#@ import namespace="MyCustomAssembly" #>
[TestClass]
public class <#= Model.PluginName #>ServiceTest
{
    // Example model value from scaffolder script: <#= Model.ExampleValue #>
    // 
<# 
    Type foo = Type.GetType("MyCustomAssembly."+Model.PluginName + "Service");
    if (foo == null) {
#>
// <#= "NULL" #>
<# } else {  
        // Output one generic UnitTest per Property in the object type
   } #>
}

}

像这样:

foreach (PropertyInfo p in Type.GetType(typeName).GetProperties())
{
    Console.WriteLine(p.Name);
}

如果您有类型的全限定名称,那么您可以使用Type.GetType(string)方法

相关内容

  • 没有找到相关文章

最新更新