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