Исключение Stackru при использовании Fallback с Create в LightInject 3.0.2.5

Это копия https://github.com/seesharper/LightInject/issues/173

Я пытался автоматически создавать конкретные типы, используя fallback и.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

2 ответа

Решение

Я являюсь автором LightInject, и проблема была обновлена ​​с помощью обходного пути, который позволяет контейнеру разрешать незарегистрированные конкретные классы.

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

Это ошибка, которая была подтверждена на https://github.com/seesharper/LightInject/issues/173 и за ней следит автор

Другие вопросы по тегам