Внедрение зависимостей .Net, как избежать нового внутри класса обслуживанияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Внедрение зависимостей .Net, как избежать нового внутри класса обслуживания

Сообщение Anonymous »

У меня общий вопрос о внедрении зависимостей в .NET Core (я использую .NET 8).
У меня уже есть некоторый опыт работы с серверным приложением .NET Blazor, и я знаю разница между

Код: Выделить всё

services.AddTransient();
services.AddScoped< IMyService, MyService>();
services.AddSingleton< IMyService, MyService >();
Три строки выше влияют на количество экземпляров класса MyService.
(новый экземпляр для каждого клиентский вызов, или только один для каждого нового пользователя, или только один для всех пользователей и клиентов).
Пока все хорошо, но теперь мой вопрос: скажем, в MyService code> class Мне нужно создать экземпляр одного или нескольких объектов другого класса (

Код: Выделить всё

MyUserClass
) в зависимости от различных входных параметров. Например, в цикле. Я бы так и сделал

Код: Выделить всё

myUserObj = new MyUserClass();
Но я читал, что с помощью DI мы никогда не должны использовать «новый».
Но как я могу создать экземпляр класса MyUserClass в зависимости от разные параметры с DI внутри класса MyService?
И вторая проблема заключается в том, как внедрить ILogger в MyUserClass при вызове

Код: Выделить всё

myUserObj = new MyUserClass();
Думаю, я упустил некоторые основы, и я был бы очень признателен, если бы кто-нибудь помог мне в этом вопросе.
Спасибо и с уважением
Япония

Подробнее здесь: https://stackoverflow.com/questions/781 ... vice-class
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»