2012-01-25 2 views
1

Я пытаюсь получить тип класса, вызвав Type.GetType(), однако он выбрасывает исключение нулевой ссылки. Я поставляю полное имя класса как строку, я не уверен, что я делаю неправильно. Вот что я делаю:Type.GetType() throwing null exception

Type.GetType("The.Name.Space.TheClassName") 

Это полное имя класса, оно отлично подходит для импортных заявлений. Может ли кто-нибудь сказать мне, что я делаю неправильно? Любые предложения были бы очень оценены. Благодаря!

Edit: блок кода

+0

Показать полный код. –

+0

Возможно, вам понадобится [имя, соответствующее сборке] (http://stackoverflow.com/questions/8681305/im-unable-to-get-a-type-using-the-type-gettype-method/8681446#8681446). Без этого тип должен находиться в текущей исполняемой сборке или в mscorlib.dll, иначе GetType возвращает значение null (так как он не найдет класс). –

+1

Возможно, попробуйте использовать 'System.Type', чтобы убедиться, что вы не ссылаетесь на более локальный метод или свойство под названием' Type' –

ответ

7

Вам необходимо указать AssemblyQualifiedName для Type.GetType(). Here - интересное сообщение в блоге о нескольких предостережениях от использования Type.GetType().

6

Если тип вы после не в System/mscorlib, а не в сборке вызывающего, то вы должны использовать имя сборки квалификацию, например:

Type type = Type.GetType(
    "The.Name.Space.TheClassName, The.Assembly") 
+0

var type = Type.GetType ("System.Data.DBConcurrencyException, System.Data "); не работает. Любая идея почему? – gsharp