为类型化工厂的方法提供实现

时间:2013-01-18 18:18:03

标签: inversion-of-control castle-windsor

我有一个类型化的工厂界面,如下所示:

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()

我接近这个错误吗?我应该在给定对象的构造函数中保留所有初始化吗?

1 个答案:

答案 0 :(得分:1)

如果这是真正属于工厂的东西,请使用ITypedFactoryComponentSelector。或者,在工厂解析的组件上使用.OnCreate()