Во время разработки новой универсальной системы аутентификации для некоторых наших продуктов я столкнулся с архитектурной проблемой, с которой я не могу найти подходящее решение.Инъекция зависимостей модуля ASP.NET
Я попытался упростить проблему, чтобы ее легко объяснить.
В библиотеке есть два класса:
Менеджер отвечает за хранение в настоящее время прошедших проверку подлинности пользователей.
Модуль Ответственность за проверку каждого запроса в соответствии с политиками безопасности несет модуль. Модуль должен попросить менеджера определить, проверяется ли пользователь в настоящее время.
Теперь менеджеру предоставляется реализация интерфейса, который позволяет менеджеру загружать пользователей из репозитория. Конкретная реализация не содержится в этой библиотеке. Из-за этого я не могу напрямую создать экземпляр репозитория в библиотеке.
У меня нет способа изменения свойств или предоставления аргументов для конструктора модуля. Итак, мой вопрос в том, как я могу дать модулю ссылку на экземпляр менеджера?
namespace Demo
{
public interface IRepository
{
object GetUser(int id);
}
public class Manager
{
public IRepository Repository { get; private set; }
public Manager(IRepository repository)
{
this.Repository = repository;
}
}
public class Module : IHttpModule
{
// How can i access an instance of the manager class here
// when I am unable to instantiate an instance of
// of an implementation of the IRepository interface.
}
}
Это немного расплывчато, вы можете разместить некоторую реализацию псевдокод, чтобы продемонстрировать, что вы пытаетесь сделать? –