Именованный эквивалент области действия в Simple Injector - PullRequest
0 голосов
/ 16 октября 2018

Мы используем иерархию различных пользовательских областей с именем Ninject в нашем приложении.Но в течение некоторого времени мы страдали от проблем с производительностью этой платформы и хотели бы заменить ее на простой инжектор.К сожалению, я не могу найти поддержку пользовательских областей в простом инжекторе.

Например, мы создаем область видимости следующим образом:

Bind<ITest>().To<Test>().InNamedScope(InjectionScope.CustomScope.ToString());

, и области действия определяются так, например:

Bind<ILeftCustomScope>().To<LeftCustomScope>()
    .DefinesNamedScope(InjectionScope.CustomScope);
Bind<IRightCustomScope>().To<RightCustomScope>()
    .DefinesNamedScope(InjectionScope.CustomScope);

Затем в другом месте кода:

public CustomScopeBuilder(
    IFactory<ILeftCustomScope> left_factory, 
    IFactory<IRightCustomScope> right_factory)
{
    _left_factory = left_factory;
    _right_factory = right_factory;
}

private ICustomScope MakeLeftScope()
{
    return _left_factory.Create();
}

private ICustomScope MakeRightScope()
{
    return _right_factory.Create();
}
...