我在使用 Castle.Windsor 的 TypedFactoryFacility 概念时遇到了问题,不知道如何解决(或者如果可以的话)。
我有一个这样定义的 ViewModel;
public class MyViewModel : IMyViewModel
{
// constructor which I aim to access through the factory
public MyViewModel(
ISomeContainerResolvableDependency a,
ISomePassedInDependency b)
{ ... }
}
以及相应的工厂接口定义如下;
public interface IMyViewModelFactory
{
IMyViewModel Create(ISomePassedInDependency a);
void Release(IMyViewModel vm);
}
但是,当我尝试使用有效的非空实例调用工厂时ISomePassedInDependency
;
ISomePassedInDependency o = new SomePassedInDependency();
IMyViewModelFactory factory = IoC.Get<IMyViewModelFactory>();
IMyViewModel viewModel = factory.Create(o);
我收到一个异常,指出 Castle Windsor 无法从IMyViewModel
on解决依赖关系ISomePassedInDependency
。在这种情况下,我正在提供ISomePassedInDependency
实例,并且只希望该设施ISomeContainerResolvableDependency
为我解决问题。
如果我更改构造函数定义以接受我传入的值类型(int
例如)而不是ISomePassedInDependency
实例,则工厂调用有效。那么,似乎在 Castle Windsor 内部有一个假设,即所有引用类型都将被容器解析,而其他任何东西都不会?
有什么办法可以使这项工作?