Я пытаюсь использовать Type.GetType и передать полное имя класса caLibClient.entity.Web2ImageEntity. CaLibClient.entity - это пространство имен, расположенное в отдельной сборке (caLibClient) и добавленное в список сборок ссылок на программы. Type.GetType всегда возвращает Null, когда я вызываю его из программы, что не так?
Тип .GetType return null
Ответ 1
Вам также нужно добавить имя сборки, так как ваш тип не находится в исполняющей сборке (или mscorlib.) Таким образом, вызов должен быть:
var myType = Type.GetType("caLibClient.entity.Web2ImageEntity, FullAssemblyName");
TYPENAME
Тип:System.String
Имя, присвоенное сборке, для получения типа. Видеть AssemblyQualifiedName. Если тип находится в текущем сборки или в Mscorlib.dll, достаточно указать имя типа квалифицируется по своему пространству имен.
В docs для AssemblyQualifiedName
это примерное имя:
TopNamespace.SubNameSpace.ContainingClass+NestedClass, MyAssembly, Version=1.3.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089
Обновить. Если вы уже ссылаетесь на сборку в своем проекте и знаете во время компиляции, что такое имя типа, вам лучше сказать
Type myType = typeof(caLibClient.entity.Web2ImageEntity);
так как теперь вам не нужно искать тип во время выполнения; компилятор сделает все для вас.
Ответ 2
Попробуйте Type.GetType("caLibClient.entity.Web2ImageEntity, caLibClient")
, в соответствии с Ассемблерное имя
Ответ 3
Вам нужно передать имя сборки с сборкой, в вашем случае что-то вроде этого:
var yourType = Type.GetType("caLibClient.entity.Web2ImageEntity,caLibClient");
Ответ 4
Если вам известен тип сборки, в котором живет целевой тип, вы можете избежать жесткого кодирования полного имени сборки. Например:
Type.GetType(
"MyAssembly.Foo.BarSubclass, " + typeof(MyAssembly.Foo.IBar).Assembly.FullName)