powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Net Core Dependency Injection. Как запретить инжектить отдельные сущности без родителя ?
6 сообщений из 6, страница 1 из 1
Net Core Dependency Injection. Как запретить инжектить отдельные сущности без родителя ?
    #39936775
MrBitCoin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предположим, что есть такой код.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
interface IUoW
{
  IDocRepository DocRepository{get;}
  IFileRepository FileRepository{get;}

  SaveChangesAsync ();
}

class DocRepository: IDocRepository
{
  private DbContext _dbContext;
  public DocRepository(DbContext context) {_dbContext = context}
}

class UoW: IUoW
{
  private DbContext _dbContext;
  private IDocRepository _docRepository;
  ... IFileRepository

  public UoW (DbContext dbContext, IDocRepository docRepository) {...}
 
  IDocRepository DocRepository {get {return _docRepository}}
  ... IFileRepository
}



Как настроить IoC, чтобы IDocRepository и IFileRepository можно было инжектить только в UoW ? Чтобы в классы сервисы можно было инжектить только сам IUoW и уже через него получать доступ к интерфейсам репозиториев, но не иметь возможности заинжектить эти репозитории по отдельности ?

Да, я понимаю, что если все это зарегистрировать как Scoped, то разницы особой нет. Просто хочу сделать код несколько выразительным...
...
Рейтинг: 0 / 0
Net Core Dependency Injection. Как запретить инжектить отдельные сущности без родителя ?
    #39936783
MrBitCoin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу это сделать из-за того, что сейчас в сервисы могут инжектить по 2-3 репозитория за раз. Я хочу уменьшить количество входных параметров с 2-3 до 1. При этом хочу добится единообразия кода. Раз уж решили инжектить только UoW, то делаем это всегда, не инжектим репозиторий когда нужен только он один.
...
Рейтинг: 0 / 0
Net Core Dependency Injection. Как запретить инжектить отдельные сущности без родителя ?
    #39936786
MrBitCoin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя, с другой стороны, плохо, что у сервисов будет, так просто, доступ к методу SaveChanges. Хммм. Если инжектить репы по отдельности, то SaveChanges будет не доступен. Но и количество параметров может быть существенно большим.

Даже не знаю, что лучше.

Однако все равно хочу узнать ответ на свой первый вопрос.
...
Рейтинг: 0 / 0
Net Core Dependency Injection. Как запретить инжектить отдельные сущности без родителя ?
    #39936816
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrBitCoin,

Старайтесь изолировать сервисы друг от друга и следовать принципам SOLID.
Уменьшение входных параметров -- это бессмысленная цель. За всё всё делает DI, какая разница сколько параметров? Главное, чтобы было легко тестировать и меньше связанности.
...
Рейтинг: 0 / 0
Net Core Dependency Injection. Как запретить инжектить отдельные сущности без родителя ?
    #39936974
MrBitCoin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

Ок. Решил вопрос тем, что в IUoW оставил лишь метод SaveChanges. Репозитории будут инжектится по отдельности, без путаницы. UoW будет отвественнен лишь за сохранение итоговой работы.
...
Рейтинг: 0 / 0
Net Core Dependency Injection. Как запретить инжектить отдельные сущности без родителя ?
    #39936994
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrBitCoin
hVostt,

Ок. Решил вопрос тем, что в IUoW оставил лишь метод SaveChanges. Репозитории будут инжектится по отдельности, без путаницы. UoW будет отвественнен лишь за сохранение итоговой работы.


Лайк )
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Net Core Dependency Injection. Как запретить инжектить отдельные сущности без родителя ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]