Как вы возвращаете тип на основе строки, где тип находится в другой сборке - PullRequest
1 голос
/ 16 июня 2011

Это расширение того, что я ранее задавал в этом вопросе.Я могу использовать Type.GetType (mystring), чтобы вернуть тип, основанный на строке, которую я передаю.Проблема в том, что тип, который я хочу определить, находится в другой сборке.

Как вернуть тип на основе строки, где тип находится в другой сборке.

Редактировать: У меня есть метод, который принимает строку, строка является типом, который я хочу вернуть.Я бы не хотел жестко кодировать сборку в метод, если это возможно ...

Ответы [ 5 ]

2 голосов
/ 16 июня 2011

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

var stringType = Type.GetType("System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", true);

Если это не так, вам может понадобиться сначала загрузить сборку:

var myType = Assembly.LoadFrom(@"c:\work\MyAssembly.dll").GetType("Foo.Bar", true);
1 голос
/ 16 июня 2011

Type.GetType(...) может сделать это, вам просто нужно передать имя типа, уточненное в пространстве имен: http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx

0 голосов
/ 16 июня 2011

Используйте полное имя сборки:

Получит тип ViewPage в сборке System.Web.Mvc:

Type.GetType(System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35)
0 голосов
/ 16 июня 2011

http://msdn.microsoft.com/en-us/library/y0cd10tb.aspx

Что-то вроде

Type t = Assembly.Load("myassembly").GetType("myType");
0 голосов
/ 16 июня 2011

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

Получив это, вы можете использовать компоненты System.Reflection, чтобы получить то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...