Во-первых, я бы порекомендовал ознакомиться с документацией Autofac в веб-формах и быстро начать работу.Я думаю, что вы можете получить ответы на многие вопросы, хотя я понимаю, что это очень много.DI сложен, и я боюсь, что предоставление здесь «быстрого ответа» может привести к неправильному пониманию происходящего.
В общем ...
- Вы регистрируете типы в Autofac, которые хотите ввести.Это включает все типы, которые понадобятся вашим веб-формам , а также все зависимости, которые понадобятся этим типам .
- Autofac, благодаря своей интеграции, разрешит зависимости и поместит их в ваши веб-формы.Если эти объекты также имеют зависимости (например, параметры конструктора), то Autofac также автоматически определит их и подключит.
Скажите, что ваша сетьДля формы требуется свойство с именем IEmailSender
...
public IEmailSender EmailSender { get; set; }
Вашему объекту отправителя электронной почты может потребоваться другая зависимость, например, фабрика сетевых сокетов или что-то в этом роде.
public EmailSender(ISocketFactory socketFactory)
Вы должны зарегистрироватьсяоба из них в контейнере. Неважно, из какой сборки они происходят.Вы должны зарегистрировать их в контейнере Autofac, чтобы он работал.
builder.RegisterType<EmailSender>().As<IEmailSender>();
builder.RegisterType<TcpFactory>().As<ISocketFactory>();
Когда ваша веб-форма получает IEmailSender
, Autofac сначала разрешит TcpFactory
, затем укажите это вконструктор EmailSender
, тогда он будет передан вашей веб-форме.
Опять же, многое из этого описано в документах и примерах.Хотя я понимаю, что есть много и это может быть ошеломляющим, Я настоятельно призываю вас просмотреть эту информацию , потому что это может сэкономить вам много времени и боли в долгосрочной перспективе.