#c# #reflection #types #console
#c# #отражение #типы #консоль
Вопрос:
Следующий код выдает значение null:
Type type = typeof(Console).Assembly.GetType("Console"); //null
Как это возможно? Я ищу консоль типа в сборке, где определена консоль…
Ответ №1:
GetType()
ожидает полное имя типа, включая пространство имен.
Если вам нужен этот единственный тип, вы можете получить его также с помощью just typeof(Console)
.
Комментарии:
1. Нет ли способа это изменить?
2. В разных пространствах имен может существовать больше типов, называемых Console, так что, в общем, нет. Однако вы можете перечислить все типы и найти те, у которых есть совпадающее имя.
3. Например, этот typeof(консоль). Сборка. GetTypes() . Где(t => t.Name == «Консоль»)
Ответ №2:
Я думаю, что Томас очень четко отвечает на ваш вопрос; однако я хотел добавить, что, поскольку вы действительно знаете тип, вы можете сделать что-то подобное следующему:
Type type = typeof(Console);
type = type.Assembly.GetType(type.FullName);
Вы можете просто использовать свойство FullName, чтобы получить полное имя типа, включая пространство имен. Таким образом, в будущем вы сможете избежать проблемы, с которой только что столкнулись.