Как создать Tagged Litetimes в Simple Injector?

Я хочу, чтобы Simple Injector был эквивалентен Autofac помеченные жизни:

Я прочитал документацию Simple Injector. Наиболее вероятным способом достижения этого является использование нестандартный образ жизни Simple Injector:

Но документации по нему очень мало, и я не могу понять, как получить от него то, что я хочу. Как я могу получить эквивалент теговых областей Autofac в Simple Injector?

Пример того, что я хотел бы:

// Arrange
var container = new Container();

container.Register<ICommand, ConcreteCommand>(new AsyncScopedLifestyle());
container.Register<IDBContext, ConcreteDbContext>(new AsyncScopedLifestyle("dbContext"));

using (AsyncScopedLifestyle.BeginScope(container))
{
    // Act
    var iCommandInstance1 = container.GetInstance<ICommand>();
    IDBContext iDbContextInstance1 = null;
    IDBContext iDbContextInstance2 = null;

    using (AsyncScopedLifestyle.BeginScope(container, "dbContext"))
    {
        var iCommandInstance2 = container.GetInstance<ICommand>();
        iDbContextInstance1 = container.GetInstance<IDBContext>();

        // Call things that depend on IDBContext here

        // Assert
        Assert.IsTrue(object.ReferenceEquals(iCommandInstance1, iCommandInstance2));
    }

    using (AsyncScopedLifestyle.BeginScope(container, "dbContext"))
    {
        var iCommandInstance3 = container.GetInstance<ICommand>();
        iDbContextInstance2 = container.GetInstance<IDBContext>();

        // Call things that depend on IDBContext here

        // Assert
        Assert.IsTrue(object.ReferenceEquals(iCommandInstance1, iCommandInstance3));
    }

    Assert.IsFalse(object.ReferenceEquals(iDbContextInstance1, iDbContextInstance2));
}

В моем случае не имеет смысла, чтобы два экземпляра IDBContext были одинаковыми.

В Simple Injector нет эквивалента. Пожалуйста, предоставьте нам пример того, чего вы пытаетесь достичь и почему.

Steven 26.06.2019 18:19

@Steven Приведен пример.

NomenNescio 27.06.2019 11:21

Спасибо за предоставленный пример. К сожалению, то, что вы описываете, это проблема XY. Не могли бы вы вместо этого объяснить реальная проблема?

Steven 27.06.2019 13:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Simple Injector не поддерживает эту функцию. Если вы хотите реализовать эту функцию вручную с помощью пользовательских стилей жизни, вам придется переписать большую часть Simple Injector. Если вам действительно нужна эта функция, используйте AutoFac или другую платформу внедрения зависимостей, которая ее поддерживает.

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