我使用此代码从我的班级Index
_PropertyInfo info = typeof (IndexViewModel).GetProperty("Header");
我可以以某种方式使用typeof ()
- 部分并通过传入字符串动态获取类型吗?我的例子显示了我想要做的事情。
string model = "IndexViewModel";
_PropertyInfo info = typeof (model).GetProperty("Header");
答案 0 :(得分:3)
您可以使用Type.GetType
方法获取给定字符串的Type
实例。但请注意,该方法需要assembly qualified名称。这意味着您需要传递名称空间+类型名称。例如,Type.GetType("String")
返回 null ,但Type.GetType("System.String")
返回string
类的类型。当然,程序集限定名称不只是名称空间+类型名称,请参阅documentation以了解更多内容。
答案 1 :(得分:1)
如果您没有完全限定名称,可以遍历程序集以查找类似的类型:
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");
}
答案 2 :(得分:0)
尝试使用Type.GetType方法