Typeof:如何从字符串中获取类型

本文关键字:获取 取类型 字符串 Typeof | 更新日期: 2023-09-27 18:01:33

我有很多对象,每个对象都有字符串形式的类型信息。
如:

string stringObjectType = "DateTime";

当运行时,我没有对象本身。
所以我不能测试typeof (object)

如何在运行对象的类型时获得:

typeof (stringObjectType)

Typeof:如何从字符串中获取类型

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;

如果你需要使用模糊或不完整的名称,那么你将会有一个有趣的时间乱搞反射。不是不可能,但肯定很痛苦。