在LightInject 3.0.2.5中使用带Create的Fallback时发生StackOverflow异常



这是https://github.com/seesharper/LightInject/issues/173

我尝试使用回退和自动创建具体类型。Create(),但它以某种方式循环自身,我不明白为什么。

这是我的测试代码:

public class Foo
{
    public Foo(IBar bar, IBar2 bar2)
    {
    }
}
public interface IBar2
{
}
class Bar2 : IBar2
{
}
public interface IBar
{
}
class Bar : IBar
{
}
private ServiceContainer container = new ServiceContainer();

container.RegisterFallback((t, s) => true, Factory);
container.Register<IBar, Bar>();
container.Register<IBar2, Bar2>();
var foo = container.GetInstance<Foo>(); // Error here
private object Factory(ServiceRequest req)
{
    return container.Create(req.ServiceType);
}

你能给我个建议吗?

即使Factory方法看起来像这样,它也会循环:

private object Factory(ServiceRequest req)
{
    container.Register(typeof(Foo));
    return container.GetInstance<Foo>();
}

但如果我事先注册Foo(我显然想避免),效果会很好

container.Register(typeof(Foo));
var foo = container.GetInstance<Foo>(); //ok

我是LightInject的作者,该问题已通过一个变通方法更新,使容器能够解决未注册的具体类。

https://github.com/seesharper/LightInject/issues/173

这是在中确认的错误https://github.com/seesharper/LightInject/issues/173并由作者负责

相关内容

  • 没有找到相关文章

最新更新