假设我想让一个ProxyFactory创建实例,我需要能够向这个工厂传递一个构造函数参数列表。
public class Foo : ViewModelBase
{
public Bar MyBar { get; private set; }
[Inject]
public Foo(Bar bar)
{
MyBar = bar;
}
}这是我当前的模块,需要对其进行扩展以传递依赖项,因为这些依赖项可以通过ProxyFactory对象来解析
public class InjectionModuleForConstructorArgsTest : NinjectModule
{
public override void Load()
{
ViewModelProxyFactory proxyFactory = new ViewModelProxyFactory();
Bind<Foo>().ToMethod(
ctx =>
{
return proxyFactory.CreateViewModelProxy<Foo>();
});
}
}基本上,我想要实现的是以下自动化:
Bind<Foo>().ToMethod(
ctx =>
{
return proxyFactory.CreateViewModelProxy<Foo>(Kernel.Get<Bar>());
});你知道这是否可能吗?
发布于 2013-05-07 18:37:27
在这种情况下,我建议将ViewModelProxyFactory实现为Provider<Foo>,并将Bar注入到provider的构造函数中
public class ViewModelProxyFactory<T> : Provider<T>
{
public ViewModelProxyFactory(Bar bar) { this.bar = bar; }
public T CreateInstance(IContext ctx)
{
return putYourFactoryCodeHere
}
}
Bind<Foo>().ToProvider<ViewModelProxyFactory<Foo>>();https://stackoverflow.com/questions/16401174
复制相似问题