【发布时间】:2025-12-26 17:10:17
【问题描述】:
我正在使用 Castle Windsor 3.3 并且有一个需要注入 IMachine 实例的 ViewModel。此数据在运行时才可用,因此我正在尝试使用 Typed Factory。
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 使用我传递给工厂的对象?
谢谢
【问题讨论】:
标签: c# castle-windsor factory