Typeof: как получить тип из строки

У меня много объектов, каждый из которых у меня есть информация в строке о ее типе.
например:

string stringObjectType = "DateTime";

Во время работы у меня нет объекта. Поэтому я не могу проверить его typeof (object)

Как я могу получить при запуске тип объекта:

typeof (stringObjectType)

Ответы

Ответ 1

try
{
    // Get the type of a specified class.
    Type myType1 = Type.GetType("System.DateTime");
    Console.WriteLine("The full name is {0}.", 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 {0}.", myType2.FullName);
}
catch(TypeLoadException e)
{
    Console.WriteLine(e.Message);
}
catch(Exception e)
{
    Console.WriteLine(e.Message);
}

Смотрите Type.GetType(string) в MSDN

Ответ 2

Вы можете использовать Type.GetType(), чтобы получить тип из его имени строки. Итак, вы можете сделать:

Type DateType = Type.GetType("System.DateTime");

Вы не можете просто использовать "DateTime", поскольку это не имя типа. Если вы сделаете это, и имя будет неправильным (оно не существует), тогда оно выдает исключение. Таким образом, вам понадобится try/catch.

Вы можете получить правильное имя типа для любого заданного объекта:

string TypeName = SomeObject.GetType().FullName;

Если вам нужно использовать неопределенные или неполные имена, тогда вам будет весело провести время с размышлениями. Не невозможно, но, конечно, боль.