Size: a a a

var chat = new Chat();

2021 August 17

VL

Vova Lantsov in var chat = new Chat();
Про инжект в стартапе
источник

B

Bogdan in var chat = new Chat();
но в тиоге мы выкртились как-то без статики. я уже даже не помню что там за кейс был
источник

AS

Andrii Shcherbyna in var chat = new Chat();
Этот метод поддерживает инжектирование через аргумент
источник

AS

Andrii Shcherbyna in var chat = new Chat();
Переслано от Bogdan
а вот и лажа, для этого надо  IServiceProvider   а не IServiceCollection
источник

B

Bogdan in var chat = new Chat();
хех, да, можно.

Я кстити одобряю такое. Но у меня чет на рпоекте лди любят именн оекстеншен мтеоды делать
источник

VL

Vova Lantsov in var chat = new Chat();
Логгер тогда в них передавай параметром
источник

B

Bogdan in var chat = new Chat();
хм, интресно, спасибо!
источник

AS

Andrii Shcherbyna in var chat = new Chat();
Extension методы удобны для fluent синтаксиса, но создают ряд проблем
источник

B

Bogdan in var chat = new Chat();
System.InvalidOperationException: Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger`1[XXXX.YYYY.Web.Startup]' while attempting to activate 'XXXX.YYYY.Web.Startup'.
источник

VL

Vova Lantsov in var chat = new Chat();
Странно, у меня работало
источник

B

Bogdan in var chat = new Chat();
3.1 у меня
источник

AS

Andrii Shcherbyna in var chat = new Chat();
А через аргумент метода?
источник

B

Bogdan in var chat = new Chat();
public Startup(IConfiguration configuration, IHostEnvironment environment, ILogger<Startup> logger)
Вот такой конструктор
источник

VL

Vova Lantsov in var chat = new Chat();
На крайняк можешь сделать services.BuildServiceProvider()

Промежуточный провайдер
источник

B

Bogdan in var chat = new Chat();
The ConfigureServices method must either be parameterless or take only one parameter of type IServiceCollection.
источник

B

Bogdan in var chat = new Chat();
да, но это будет уже другой провайдер чем тот что будет исполоваться потом в рантайме

не кошерно и утечка
источник

VL

Vova Lantsov in var chat = new Chat();
И ещё вариант у конкретного сервиса при активации работать с провайдером в лямбде

services.AddSingleton(provider =>
{
   var logger = ...
})
источник

B

Bogdan in var chat = new Chat();
ладно, господа, всем спасибо за приятную беседу. пойду я. Хорошей ночи.
источник

AS

Andrii Shcherbyna in var chat = new Chat();
Скорей всего оно не может зарезолвить именно ILogger<Startup>. Попробуй обычный Ilogger без дженерика
источник

B

Bogdan in var chat = new Chat();
не...
источник