我正在使用Castle Windsor 3.3并且需要注入一个需要IMachine
实例的ViewModel。这些数据直到运行时才可用,所以我试图使用Typed Factory。如何将依赖关系传递给Castle Windsor类型的工厂
public MachDataViewModel(IMachine mach)
{
_mach = machCfg;
}
public interface IEquipmentDataFactory
{
IEquipmentData Create(IMachine mach);
void Release(IMachine mach);
}
这里是我的注册代码:
container.AddFacility<TypedFactoryFacility>();
container.Register(
Component.For<IWindsorContainer>().Instance(container),
Component.For<IEquipmentData>().ImplementedBy<EquipmentData>(),
Component.For<IMachine>().ImplementedBy<Machine>(),
Component.For<IEquipmentDataFactory>().AsFactory());
当我调用Create方法,它注入一个新实例化的对象,而不是一个我通过。如果我在注册中删除Component.For<IMachine>
条目,它会给我一个缺失的依赖关系。
IEquipmentData ed = null;
IMachine m = GetMachine();
ed = factory.Create(m);
如何让Windsor使用我传递给工厂的对象?
感谢
@cajundave - 这篇帮助您解决这个问题? –