Choć Nancy oferuje domyślnie swój własny kontener do IoC – TinyIoC – może zaistnieć potrzeba użycia czegoś innego – np. StructureMap.
Integracja StrucutreMap z Nancy jest dość prosta (w sumie jak wszystko w Nancy :). Zaczynamy od instalacji pakietu NuGet:
Install-Package Nancy.Bootstrappers.StrucutreMap
A następnie tworzymy własny bootstrapper (lub modyfikujemy istniejący, jeśli takowy posiadamy), który dziedziczy z klasy StructureMapNancyBootstrapper:
public class Bootstrapper : StructureMapNancyBootstrapper
{
protected override void ConfigureApplicationContainer(IContainer container)
{
container.Configure(x =>
{
x.Scan(y => y.Assembly(Assembly.GetCallingAssembly()));
x.For<IService>().Use<MyService>();
});
}
}
W ramach własnego bootstrappera przeciążamy metodę ConfigureApplicationContainer, w której mamy dostęp instancji obiektu kontenera używanego przez Nancy. Metoda ta jest idealnym miejscem na skonfigurowanie kontenera dokonanie rejestracji zależności.

Dodaj komentarz