Возвращает null
, если имя класса не найдено, скорее всего потому, что свойство Name
вашего типа просто возвращает имя типа, а не имя пространства имен для его определения.Убедитесь, что ваше свойство Name
включает и пространство имен, которое его квалифицирует.
В соответствии с MSDN для Assembly.GetType (имя строки) возвращает:
Объект, которыйпредставляет указанный класс, или Nothing, если класс не найден.
Таким образом, поскольку вы получаете null
, он не может найти имя типа, скорее всего, причина в том, что он либо неправильно написан,или вы не добавляли имя типа к пространству имен.
Этот метод ищет только текущий экземпляр сборки.Параметр name включает пространство имен, но не сборку.
Или, возможно, неправильный регистр имени типа, существует версия GetType()
, которая поддерживает аргумент bool
длясравнение имени без учета регистра также.
ps Пространство имен необходимо, поскольку имя сборки не может быть индикатором пространства имен.То есть, если у меня был тип в сборке MySystem.MyClasses.DLL
, это не значит, что тип обязательно находится в пространстве имен MySystem.MyClasses
.
Полная страница MSDN (всегда приятно видеть, что вещи выбрасывают /return) здесь: Метод Assembly.GetType (String)
Очевидно, что сборка существует (или она вернет null
, и вы получите NullReferenceException
), поэтому другойвозможно, у вас нет той версии сборки, которую вы ожидаете (т.е. программа, использующая этот код, имеет другую версию сборки, чем код, генерирующий данные).