Результат последней сборки master ветки:
Репозиторий содержит маленький атрибут для .net core 2.2 приложений, позволяющий регистрировать классы в MS Dependency Injection.
Собирается в NuGet пакет.
dotnet add package Katren.DiReg
После успешной установки пакета для регистрации всех классов с атрибутом DiReg достаточно вызывать метод расширения IServiceCollection.AddDiRegClasses().
Для регистрации вашего класса в DI достаточно указать ему атрибут DiReg.
Возможны 2 варианта использования:
[DiReg(DiLifetime: lifeTime)]
public class SimpleRegClass {}
Эквивалентно вызову:
IServiceCollection.Add***(SimpleRegClass, SimpleRegClass);
public interface ISomeService {}
[DiReg(typeof(ISomeService), DiLifetime: lifeTime)]
public class SomeService {}
Эквивалентно вызову:
IServiceCollection.Add***(ISomeService, SomeService);
В любом случае, неоходимо всегда указывать тип жизненного цикла регистрируемого сервиса.
Делается это с помощью enum DiLifetime.
Поддерживается 3 варианта жизненного цикла:
-
DiLifetime.Singleton - Синглтон. Эквивалентно вызову метода:
IServiceCollection.AddSingleton(***);
-
DiLifetime.Scoped - Создаётся ровно 1 экземпляр в рамках скоупа. Например, для AspNet один экземпляр на обработку запроса. Эквивалентно вызову метода:
IServiceCollection.AddScoped(***);
-
DiLifetime.Transient - Создавать экземпляр класса на каждый запрос. Эквивалентно вызову метода:
IServiceCollection.AddTransient(***);