확인 어쩌면 캐슬 윈저에 대한 정보가 너무 많아서이 키워드를 찾는 것이 모든 것을 보여주기 때문에 솔직하게 나는 그것이 어떻게 작동하는지 충분히 이해하지 못합니다. 이 문제를 올바르게 해결하십시오. 나는이 시점에서 운이 거의없는 많은 순열을 시도했다. 캐슬 윈저 IoC 속성 주입 간단한 방법
내가
내가 싱글로 인스턴스화하려는IUnitOfWorkFactory
있습니다.
iocContainer = new WindsorContainer()
.Install(FromAssembly.This());
var propInjector = iocContainer.Register(
Component.For<IUnitOfWorkFactory>()
.LifestyleSingleton()
.Instance(new NHUnitOfWorkFactory())
);
propInjector.Resolve<IUnitOfWorkFactory>();
이 나의 Application_Start
방법에서 호출되는 : 그래서, 그래서 다음과 같은 코드의 비트 쓰기, 성 윈저를 설치합니다.
내가
지금처럼 유선AccountController
있습니다
public class AccountController : SecureController
{
public IUnitOfWorkFactory UnitOfWorkFactory { get; set; }
...
... 지금까지 내가 이해할 수있는,이해야 그냥 "작업"(어떻게 나 한테 물어하지는 않지만). 하지만 내 속성은 내가 그것을 사용하려고하면 항상 null입니다.
뭔가 바보 같은 간단한 누락 것 같다,하지만 난 그게 무엇인지 전혀 모른다.
나는 또한 성공하지
var propInjector = iocContainer.Register(
Component.For<IUnitOfWorkFactory>()
.ImplementedBy<NHUnitOfWorkFactory>()
.LifestyleSingleton()
);
을 시도했습니다.
내가 뭘 잘못하고 있니?
결론
나는 여기에 몇 가지 단계를 누락되었습니다. tutorial에 따라 설치 프로그램과 부트 스트 래퍼를 만들었지 만 제어기 팩토리를 만들기 전에 잘못된 지점에 서비스를 등록했습니다.
당신이 컨트롤러를 등록 있나요? –
... 생성자 종속성 주입에만 필요하지 않습니까? 아마 나는 이것이 어떻게 작동해야하는지 오해한다. –
아니요, 컨테이너는 개체 그래프의 루트를 만들어야합니다. 이 경우 컨트롤러. 이는 Property 또는 Constructor 주입의 경우입니다 (동일한 방식으로 작동하기 때문입니다). 그 공 회전을 얻는다 무엇 (http://docs.castleproject.org/Default - 당신이 사이트에있는 윈저의 예를 보면 –