如何在LightInject中注册接受参数的开放式泛型?

问题描述

我有以下泛型类,它取决于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 (将#修改为@)