2013-01-18 2 views
1

입력 된 공장의 메소드를 구현 제공 :다음과 같이 나는이 유형이 지정된 팩토리 인터페이스를

public interface ILogMessageFactory 
{ 
    ILogMessage Create(LogMessageType logMessageType, String text); 
} 

을 나는 모두가 다음 등록하고 :

public void Install(IWindsorContainer container, IConfigurationStore store) 
{ 
    container.AddFacility<TypedFactoryFacility>(); 

    container.Register(
     Component.For(typeof(ConsolePrompter)), 
     Component.For<ILogger>().ImplementedBy<ConsoleLogger>().LifeStyle.Transient, 
     Component.For<ILogMessageFactory>().AsFactory(), 
     Component.For<ILogMessage>().ImplementedBy<LogMessage>().LifeStyle.Transient 
     ); 
} 

문제는 제가 구현하려는 것입니다 ILogMessageFactory.Create 방법 자신, 내가 돌아 오기 전에 몇 가지를 설정합니다.

Component.For<ILogMessageFactory>().ImplementedBy<LogMessageFactory>().AsFactory() 

나는이 잘못 접근하고 있는가 :

나는 어떤 성공없이 명백한 순진 솔루션을 시도했습니다? 주어진 객체의 생성자에서 모든 초기화를 유지해야합니까?

+0

초기화하려는 것은 어떤 종류입니까? –

+0

지금은 생성자에서 수행 할 수 없었던 작업은 거의 없습니다 (로그 메시지의 타임 코드처럼). 비록 내가 창조가되기 전에해야 할 일이 있음을 알게 될지 모르지만. 공장을 통해 어떤 물건을 만들지 선택하는 것은 어떻습니까? 그런 다음 공장 팩토리를 만들거나 Create() 함수를 구현하는 것이 더 좋은 아이디어입니까? –

답변

1

ITypedFactoryComponentSelector이 실제 공장에 속한 경우 사용하십시오. 또는 공장에서 확인한 구성 요소에 .OnCreate()을 사용하십시오.

+0

완벽 함, 내가 생각한 것! –