У меня возникли проблемы с написанием оператора typeof, в котором будет использоваться переменная из файла конфигурации, код которой похож на этот
Type t = new typeof ("My.other.class" + configValue[0]);
configValue является динамическим значением, которое я получаю из файла app.config.
Ошибка, которую я получаю, это "тип ожидается", это нормально, если я набираю класс напрямую, поэтому предполагаю, что мое форматирование неверно. Как это должно быть написано?
Ключевое слово typeof
используется для использования во время компиляции. Вместо этого используйте Type.GetType(string)
.
Это то, что вы ищете?
Type t = Type.GetType("spork");
object myspork = Activator.CreateInstance(t);
Чтобы сделать это, используя только пространство имен и имя класса (например, в вопросе), вам также нужно знать, какая сборка содержит класс.
Если текущая сборка (или mscorlib) содержит тип, вы можете использовать Type.GetType(string) для получения типа,
Если тип содержится в другой сборке (то есть: в библиотеке), тогда вам нужно будет использовать Assembly.GetType, Это требует наличия экземпляра Assembly, однако, который может быть извлечен через Assembly.Load или с использованием другого типа в сборке.