Aby wykorzystać StructureMap, musimy pamiętać, aby używać .NET Framework 4.0 w wersji pełnej (nie zadziała wersja Client Profile. Pracę z kontenerem pokazano poniżej:
using(var structureMapContainer = new Container()) { structureMapContainer.Configure(x => x.For<IEngine>().Use<GasEngine>()); var car3 = structureMapContainer.GetInstance<AudiA4>(); car3.Run(); }
Konfiguracja odbywa się przez lambda expressions, nie musimy rejestrować wszystkich typów (tych, o które nie prosimy przez interfejs). Poniżej kilka innych użytecznych funkcjonalności:
public class AudiA4Registry : Registry { public AudiA4Registry() { For<IEngine>().LifecycleIs(new SingletonLifecycle()).Use<DieselEngine>(); }
using (var structureMapContainer = new Container(new AudiA4Registry())) { var car3 = structureMapContainer.TryGetInstance<AudiA4>(); if(car3 != null) car3.Run(); }
Rejestry pozwalają na odseparowanie kodu konfigurującego kontener. Metoda TryGetInstance zwróci w przypadku powyższego kodu null, ponieważ typ nie jest jawnie zarejestrowany.
Brak komentarzy:
Prześlij komentarz