Могу ли я вставить в контроллер ASP.NET MVC некоторые строки (например, значения конфигурации), используя StructureMap? - PullRequest
2 голосов
/ 23 сентября 2011

Я использую StructureMap в качестве IoC / DI для веб-сайта ASP.NET MVC.Прекрасно работает.

Обычно у меня есть мои контроллеры, которые передают интерфейсы и structMap + жадные конструкторы == отлично работает.

например.1008 *

Но .. один из моих контроллеров (и только один из них) хотел бы передать две строки.

например ..

public void FooController2 : Controller
{
    public FooController2(IPewPew pewPew, string aaa, string bbb) { .. }
}

Есть лиЛюбые способы я могу сделать это с StructureMap?Есть ли способ сказать, что, когда в списке есть строка "aaa", используйте это значение => "hi!";

Я действительно не хотел помещать все эти строки в конкретный класс с интерфейсом..

Как будто я хочу сказать что-то вроде.

For<string>().WithName("aaa").Use<string>().WithValue("hi");

Ура!

Ответы [ 2 ]

5 голосов
/ 23 сентября 2011

Это сработало для меня:

ObjectFactory.Configure( x=>
{
    x.For<FooController2>()
     .Use<FooController2>()
     .Ctor<string>("aaa")
     .Is("hi");
});
2 голосов
/ 26 сентября 2011

Вы можете зарегистрировать Func<T> делегата, который позволяет иметь безопасную регистрацию типа.

container.Configure(r => r.For<FooController2>().Use(() =>
{
    var pewPew = container.GetInstance<IPewPew>();  
    return new FooController2(pewPew, "someValue", "anotherValue");
}));
...