在 LightInject 3.0.2.5 中使用 Fallback 和 Create 时发生 StackOverflow 异常
StackOverflow exception when using Fallback with Create in LightInject 3.0.2.5
这是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
这是在https://github.com/seesharper/LightInject/issues/173中确认并由作者
处理的错误
我是 LightInject 的作者,该问题已更新为解决方法,使容器能够解析未注册的混凝土 类。
这是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
这是在https://github.com/seesharper/LightInject/issues/173中确认并由作者
处理的错误我是 LightInject 的作者,该问题已更新为解决方法,使容器能够解析未注册的混凝土 类。