Я просто начать работу с Autofac и у меня есть следующий код:Autofac и WebForms - передача непостоянных параметров, разрешенных параметров?
public class _default : System.Web.UI.Page, IUserInformationProvider
{
protected void Page_Load(object sender, System.EventArgs e)
{
ControllerFactory cf;
using (scope == ((Global_asax)this.Context.ApplicationInstance).ContainerProvider.ApplicationContainer.BeginLifetimeScope()) {
cf = scope.Resolve<IControllerFactory>(); // <-- would love to pass "this" somewhere here, but how???
}
}
}
ControllerFactory определен ниже, а также принимает интерфейс IUserInformationProvider. Я хотел бы передать экземпляр WebForm в качестве параметра для разрешения IControllerFactory.
public class ControllerFactory : IControllerFactory
{
protected IUserInformationProvider _userInformation;
public ControllerFactory(IUserInformationProvider userInformation)
{
_userInformation = userInformation;
}
}
Просматривая документацию, я вижу, что существует 3 типа параметров (Именованные, типизированных, Решенный), но первые 2 принимают только постоянные значения. Кажется, что параметры Resolved - это путь, но я как бы теряюсь в том, как его реализовать, или если это даже правильная стратегия. И как бы выглядел строитель. Режиссер?
Да, но с этим вы превратили 'UserInformation' в необязательной зависимости, и в настоящее время в теории в каждом способе' ControllerFactory', где вы будете использовать 'UserInformation' вам нужно проверить, что Свойс y не 'null' ... – nemesv