2012-04-12 3 views
6

Я использую Type.GetType() для создания экземпляра.Type.GetType() dynamic string return null

Это работает:

var type = Type.GetType("Test.ClassServices.HowService, Test"); 

Но это работа это не распространяется. Он возвращает :

var name = "How"; 
var type = Type.GetType("Test.ClassServices."+name+"Service, Test"); 
+2

GetType не создает экземпляр, он возвращает объект Type, который представляет указанный тип. Что касается нуля, уверены ли вы, что сборка может быть найдена и загружена, а пространство имен правильно? – Lloyd

+4

Я пробовал это в .NET 4 и не испытывал никаких проблем. Поэтому дважды проверьте код для опечаток. – Jetti

+2

Вы уверены, что у вас не было опечаток во 2-м случае? Я полагаю, вычисляется значение переменной 'name', уверены ли вы, что это сделано правильно (BTW, корпус)? –

ответ

5

No-repro. Выполнить этот пример:

var hardCodedWorking = Type.GetType("System.String"); 

var stringName = "String"; 
var concatenatedWorking = Type.GetType("System." + stringName); 

var badStringName = "string"; 
var concatenatedNull = Type.GetType("System." + badStringName); 

От Type.GetType() на MSDN:

Получает тип с указанным именем, выполняя регистрозависимое поиска.

Основываясь на этом и моем примере выше, я считаю, что наиболее вероятно, что значение name не соответствует названию класса отлично.