これは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