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;
Если вам нужно использовать неопределенные или неполные имена, тогда вам будет весело провести время с размышлениями. Не невозможно, но, конечно, боль.