问题描述
我有以下泛型类,它取决于IBar
:
public class Foo<T> : IFoo<T>
{
public Foo(IBar bar,int value) { }
...
}
我会 理想 在 LightInject 中使用类似的方法进行注册:
container.Register<IBar,Bar>();
container.Register<int,IFoo<>>((factory,value) => new Foo<>(factory.GetInstance<IBar>(),value))
这样,在运行时,我可以使用提供的值获取IFoo的实例:
container.GetInstance<IFoo<SomeType>>(42);
但是由于使用了开放的通用IFoo<>
,因此该代码显然无法编译:
container.Register<int,value) => new Foo<>(...))
如果只有Foo不是通用类,那么按照官方文档https://www.lightinject.net/#parameters,这一切都可以正常工作。
是否有通用类的解决方案?可以用其他任何方式编写它,并且仍然可以实现相同的目的吗?我尝试使用以下语法,但失去了使用接受值的委托的能力(或者至少我不知道如何做到这一点)...
container.Register(typeof(IFoo<>),typeof(Foo<>));
有什么主意吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)