Внедрение в конструктор StructureMap с именованными картами - PullRequest
2 голосов
/ 08 июня 2011

В моей инициализации фабрики объектов у меня есть что-то вроде этого:

ObjectFactory.Initialize(factory=>
{
    factory.For<User>().Add((IContext context) => 
        (User)Session["Current"]).Named("CurrentUser");
    factory.For<User>().Add((IContext context) => 
        new User()).Named("NewUser");
});

Затем в моих контроллерах я хочу иметь возможность сделать что-то вроде этого:

public MyController (UserCurrentUser) {...}

public MyOthercontroller (User NewUser) {...}

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

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

Возможна ли такая вещь?

1 Ответ

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

Нет хорошего способа сделать это с StructureMap, но я бы сказал, что вам, вероятно, не следует делать это с StructureMap.MyOtherController должен просто создать сам пользовательский экземпляр (или делегировать IUserSource, если это более важно).

...