Typeof:如何从字符串中获取类型
本文关键字:获取 取类型 字符串 Typeof | 更新日期: 2023-09-27 18:01:33
我有很多对象,每个对象都有字符串形式的类型信息。
如:
string stringObjectType = "DateTime";
当运行时,我没有对象本身。
所以我不能测试typeof (object)
如何在运行对象的类型时获得:
typeof (stringObjectType)
try
{
// Get the type of a specified class.
Type myType1 = Type.GetType("System.DateTime");
Console.WriteLine("The full name is {myType1.FullName}.");
// Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
Type myType2 = Type.GetType("NoneSuch", true);
Console.WriteLine("The full name is {myType2.FullName}.");
}
catch(TypeLoadException e)
{
Console.WriteLine(e.Message);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
参见MSDN上的Type.GetType(string)
您可以使用Type.GetType()
从其字符串名称中获取类型。你可以输入:
Type DateType = Type.GetType("System.DateTime");
你不能只使用"DateTime",因为那不是类型的名称。如果你这样做了,而名字是错误的(它不存在),那么它会抛出一个异常。所以你需要一个try/catch。
您可以通过以下操作获得任何给定对象的正确类型名称:
string TypeName = SomeObject.GetType().FullName;
如果你需要使用模糊或不完整的名称,那么你将会有一个有趣的时间乱搞反射。不是不可能,但肯定很痛苦。