Вопрос внедрения StructureMap - PullRequest
1 голос
/ 24 февраля 2009

Я пытаюсь использовать StructureMap и по сути 3 уровня абстракции. У меня есть служба хранилища и интерфейс базы данных. Таким образом, IService зависит от IRepo, а IRepo зависит от IDatabase. Моя проблема в том, что мой конкретный тип IDatabase принимает информацию о подключении к БД. Я собираюсь создать их на лету, пытаясь использовать ObjectFactory.Configure ().

Итак, у меня есть пользователь, и пользователь связан с компанией, и я ищу информацию о подключении компании, и я хочу создать соответствующий конкретный тип IDatabase на основе этой информации. У меня есть конкретный тип, настроенный в моем коде запуска. Я хочу использовать объект IService только снаружи ... поэтому я хочу создать именованный объект IService с именем компании. Возникли проблемы с попыткой создания этих типов на лету. ЛЮБАЯ информация будет полезна ...

Я в основном хочу иметь возможность создавать именованный экземпляр и либо устанавливать свойства, либо передавать конкретные аргументы конструктору во время выполнения, не зная конкретного типа. У меня есть конкретный тип установки в файле конфигурации. Я попытался использовать ObjectFactory.GetInstance и попытался установить свойства внутри метода Configure, но получил исключение StackOverflow ... HOW IRONIC

Ответы [ 2 ]

0 голосов
/ 20 декабря 2012

Не похоже, что ObjectFactory в Structuremap поддерживает внедрение именованных экземпляров

0 голосов
/ 25 февраля 2009

Нашел ответ с указанием от Джереми Миллера (автора StructureMap). Вот где он указал мне:

http://structuremap.sourceforge.net/RetrievingServices.htm#section5

вот пример того, что я использовал:

IDatabaseRepository repo =
                ObjectFactory.With("server").EqualTo("servername").
                With("database").EqualTo("dbName").
                With("user").EqualTo("userName").
                With("password").EqualTo("password").
                GetInstance<IDatabaseRepository>();
...