如何动态获取typeof()

本文关键字:获取 typeof 何动态 动态 | 更新日期: 2023-09-27 18:20:17

我正在使用此代码从类Index 中获取特定属性

_PropertyInfo info = typeof (IndexViewModel).GetProperty("Header");

我可以以某种方式使用typeof ()-部分并通过传递字符串来动态获取类型吗?下面的例子展示了我想要做的事情

string model = "IndexViewModel";
_PropertyInfo info = typeof (model).GetProperty("Header");

如何动态获取typeof()

您可以使用Type.GetType方法来获得给定字符串的Type实例。但请注意,该方法需要一个程序集限定名称。这意味着您需要传递名称空间+类型名称。例如,Type.GetType("String")返回null,但Type.GetType("System.String")返回string类的类型。当然,程序集限定的名称不仅仅是命名空间+类型名称,请参阅文档了解更多信息。

如果您没有完全限定的名称,您可以循环遍历程序集以找到如下类型:

public static Type GetType(string typeName)
  {
    var assemblies = AppDomain.CurrentDomain.GetAssemblies();
    foreach (var assembly in assemblies)
      {
        var allTypes = assembly.GetTypes();
        var type = allTypes.FirstOrDefault(t => t.Name == typeName);
        if (type != null)
          {
             return type;
          }
      }
    throw new KeyNotFoundException("Can't find type");
  }

尝试使用Type.GetType方法