Получить экземпляр из StructureMap по имени типа

Есть ли способ запросить экземпляр из ObjectFactory StructureMap по строковому имени типа? Например, неплохо было бы сделать что-то вроде этого:

var thing = ObjectFactory.GetInstance("Thing");

Пример использования - это сценарий обмена сообщениями, в котором сообщение носит очень общий характер и содержит только имя задачи. Обработчик получает сообщение, получает имя задачи из сообщения и извлекает имя типа связанного средства выполнения задачи из базы данных конфигурации. StructureMap сканирует все сборки в каталоге, и одна из них (предположительно) будет содержать тип, возвращенный из базы данных конфигурации, который затем необходимо создать.

Другая возможность - получить экземпляр Type, выполнив следующие действия:

var type = Type.GetType("Thing");

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


person JC Grubbs    schedule 11.03.2010    source источник
comment
Если StructureMap просканировал сборки, они будут загружены в AppDomain. Если Type.GetType () не может его получить, StructureMap тоже не сможет.   -  person Joshua Flanagan    schedule 12.03.2010


Ответы (1)


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

Моя проблема заключалась в том, что я не использовал полное имя сборки, и я предполагаю, что без этого метод GetType просто просматривает текущую сборку.

В любом случае добавление полного имени решило мою проблему.

Надеюсь это поможет.

Ян

person madcapnmckay    schedule 30.08.2010