Я строю приложение ASP.NET Core MVC с помощью Entity Framework Code-First. Я решил реализовать простой шаблон репозитория, обеспечивающий базовые операции CRUD для всех классов моделей, которые я создал. Я решил следовать всем рекомендациям, представленным на http://docs.asp.net, и DI - одна из них.
В .NET 5 внедрение зависимостей работает очень хорошо для любого класса, который мы не создаем напрямую (например, контроллеры, хранилища данных,...).
Мы просто внедряем их через конструктор и регистрируем сопоставления в классе Startup приложения:
// Some repository class
public class MyRepository : IMyRepository
{
private readonly IMyDependency _myDependency;
public MyRepository(IMyDependency myDependency)
{
_myDependency = myDependency;
}
}
// In startup.cs :
services.AddScoped<IMyDependency, MyDependency>();
services.AddScoped<IMyRepository, MyRepository>();
У меня проблема в том, что в некоторых моих модельных классах я хотел бы добавить некоторые из объявленных мной зависимостей.
Но я думаю, что я не могу использовать шаблон внедрения конструктора, потому что классы моделей часто бывают явно созданы, и поэтому мне нужно было бы предоставить себе зависимости, которые я не могу.
Итак, мой вопрос: есть ли другой способ, кроме инъекции конструктора, чтобы внедрить зависимости, и как? Например, я думал о шаблоне атрибута или о чем-то подобном.