Castle Windsor IoC Property Injection proste instrukcje

OK myślę, że może jestzbyt wiele informacje o zamku Windsor, ponieważ szukanie tych słów kluczowych daje mi przykłady wszystkiego i szczerze mówiąc nie rozumiem wystarczająco, jak to działa, aby prawidłowo rozwiązać ten problem. W tym momencie próbowałem kilku permutacji przy odrobinie szczęścia.

mamIUnitOfWorkFactory że chcę utworzyć instancję jako singleton. Więc instaluję Castle Windsor, napisz trochę kodu w ten sposób:

iocContainer = new WindsorContainer()
    .Install(FromAssembly.This());

var propInjector = iocContainer.Register(
    Component.For<IUnitOfWorkFactory>()
    .LifestyleSingleton()
    .Instance(new NHUnitOfWorkFactory())
    );

propInjector.Resolve<IUnitOfWorkFactory>();

To się nazywa z mojegoApplication_Start metoda.

mamAccountController połączony tak:

public class AccountController : SecureController
{
    public IUnitOfWorkFactory UnitOfWorkFactory { get; set; }
    ...

... o ile mogę to zrozumieć, powinno to po prostu „działać” (chociaż nie pytaj mnie jak). Ale moja własność jest zawsze null, gdy próbuję go użyć.

Wygląda na to, że tęsknię za czymś głupim i prostym, ale nie mam pojęcia, co to jest.

Próbowałem też

var propInjector = iocContainer.Register(
    Component.For<IUnitOfWorkFactory>()
    .ImplementedBy<NHUnitOfWorkFactory>()
    .LifestyleSingleton()
    );

bez powodzenia.

Co ja robię źle?

WNIOSEK

Brakowało mi tutaj kilku kroków. Zbudowałem instalator i program ładujący na komputerseminarium, ale zarejestrowałem swoje usługi w niewłaściwym miejscu ... przed zbudowaniem fabryki kontrolerów. Teraz mój bootstraper wygląda tak:

iocContainer = new WindsorContainer()
    .Install(FromAssembly.This());

var controllerFactory = new WindsorControllerFactory(iocContainer.Kernel);
ControllerBuilder.Current.SetControllerFactory(controllerFactory);

iocContainer.Register(
    Component.For<IUnitOfWorkFactory>()
    .ImplementedBy<NHUnitOfWorkFactory>()
    .LifestyleSingleton()
    );

... i moje zastrzyki z własności nie były już puste ... teraz muszę debugować pozostałe 87 problemów ...

questionAnswers(1)

yourAnswerToTheQuestion