我有一个类型化的工厂界面,如下所示:
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 :(得分:1)
如果这是真正属于工厂的东西,请使用ITypedFactoryComponentSelector
。或者,在工厂解析的组件上使用.OnCreate()