Подтвердить что ты не робот

Тип .GetType return null

Я пытаюсь использовать Type.GetType и передать полное имя класса caLibClient.entity.Web2ImageEntity. CaLibClient.entity - это пространство имен, расположенное в отдельной сборке (caLibClient) и добавленное в список сборок ссылок на программы. Type.GetType всегда возвращает Null, когда я вызываю его из программы, что не так?

4b9b3361

Ответ 1

Вам также нужно добавить имя сборки, так как ваш тип не находится в исполняющей сборке (или mscorlib.) Таким образом, вызов должен быть:

var myType = Type.GetType("caLibClient.entity.Web2ImageEntity, FullAssemblyName");

Из Type.GetType() docs:

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)