Инъекция предметов друг в друга

Типичная архитектура, которую я использую, состоит из объектов Manager на бизнес-уровне. Я использую DI / IOC в .NET Core / .NET Standard. Менеджеры внедряются в уровень сервисов, и, следовательно, сервисы внедряются в наши контроллеры API. Итак, в настоящее время я работаю в классе менеджеров. Теперь мне нужен метод, который находится в другом классе менеджера. Обычно я возвращаюсь обратно через уровень сервиса к контроллеру, затем вызываю следующий сервис, а затем через него менеджер.

Мне интересно, можно ли просто ввести менеджера, который мне нужен, непосредственно в менеджера, с которым я работаю. Таким образом, вы сокращаете обратный путь к контроллеру, а затем выполняете резервное копирование через другую службу другому менеджеру. В основном у меня 2 * менеджера.

public class TypeCodeManager : ITypeCodeManager
{
    public TypeCodeManager()
    {
    }

    public async Task<int> GetTypeCodeAsync(string typeCode, string code)
}

public class UserManager : IUserManager
{
     private readonly ITypeCodeManager _typeCodeManager;

     public UserManager(ITypeCodeManager typeCodeManager)
     {
        _typeCodeManager = typeCodeManager
     }
}

Это вообще хорошая идея?

С точки зрения кода, да, все в порядке. С архитектурной точки зрения? Это совершенно другой вопрос, на который можете ответить только вы и ваша команда.

JuanR 22.10.2018 15:49
I am wondering whether it is OK to... Зависит от того, что вы имеете в виду под OK.
Lews Therin 22.10.2018 15:49
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я бы сказал, что вообще не рекомендуется переходить в другие домены через «менеджеров», предполагая, что именно ваши менеджеры общаются с уровнем персистентности. Это быстро приведет к путанице в картах зависимостей и коде.

Ваши сервисы являются гораздо лучшим слоем для оркестровки междоменных проблем, поскольку они могут описывать междоменные рабочие процессы и зависеть от нескольких менеджеров.

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