Разрешить тип от имени класса в другой сборке

У меня есть метод, где мне нужно разрешить Тип класса. Этот класс существует в другой сборке с пространством имен, похожим на:

MyProject.Domain.Model

Я пытаюсь выполнить следующее:

Type.GetType("MyProject.Domain.Model." + myClassName);

Это отлично работает, если код, выполняющий это действие, находится в той же сборке, что и класс, тип которого я пытаюсь решить, однако, если мой класс находится в другой сборке, этот код не работает.

Я уверен, что есть намного лучший способ выполнить эту задачу, но у меня не было большого опыта в разрешении сборок и пересечении пространств имен внутри, чтобы решить тип класса, который я ищу. Любые советы или советы для выполнения этой задачи более изящно?

Ответ 1

Вам нужно будет добавить имя сборки следующим образом:

Type.GetType("MyProject.Domain.Model." + myClassName + ", AssemblyName");

Чтобы избежать двусмысленности или если сборка находится в GAC, вы должны предоставить полное имя сборки, например:

Type.GetType("System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");

Ответ 2

Можно ли использовать один из стандартных способов?

typeof( MyClass );

MyClass c = new MyClass();
c.GetType();

Если нет, вам нужно будет добавить информацию в Type.GetType о сборке.

Ответ 3

Краткий и динамичный подход с использованием свойства AssemblyQualifiedName -

Type.GetType(Type.GetType("MyProject.Domain.Model." + myClassName).AssemblyQualifiedName)

Наслаждайтесь!

Ответ 4

Сначала загрузите сборку, а затем тип. например: Сборка DLL = Assembly.LoadFile(PATH); DLL.GetType(TypeName);