0

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

2 に答える 2

0

私は LightInject の作成者であり、コンテナーが未登録の具象クラスを解決できるようにする回避策で問題が更新されました。

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

于 2015-03-19T09:36:30.080 に答える
0

https://github.com/seesharper/LightInject/issues/173で確認されたバグであり、作者によって管理されています

于 2015-03-19T09:27:00.007 に答える