Параметры автозапуска во время выполнения
Я новичок в autofac и ищу лучшие практики по передаче значений времени выполнения в конструктор. Я прочитал кучу вопросов о стековом потоке, где они задаются, но ни один из них полностью не раскрыт. Должны ли мы использовать делегатов, фабрику для создания сервиса и т. Д. Я знаю, что передача контейнера - не лучший способ сделать это.
В моем конкретном случае у меня есть служба, которая имеет доступ к нескольким зависимостям, например, ведение журнала, поставщик данных и т. Д. Наряду с несколькими передаваемыми службами у меня также есть параметры времени выполнения, которые мне нужно записать, скажем, идентификатор пользователя, пароль. Идентификатор пользователя и пароль требуются для SomeService и ищутся, когда веб-программа просмотра выполняет определенное действие. Ниже то, что я имею, и подчеркнуло проблему.
public class SomeService : ISomeService
{
private readonly IDataProvider _dataProvider;
private readonly ILog _log;
private readonly string _username;
private readonly string _password;
public SomeService(IDataProvider dataProvider, ILog log,
string username, string password)
{
_dataProvider = dataProvider;
_log = log;
_username = username;
_password = password;
}
}
Поставщик данных и журнал настраиваются в режиме автозапуска
builder.RegisterType<DataProviderService>().As<IDataProvider>()
builder.RegisterType<SomeLogService>().As<ILog>()
Большая часть функциональности этого «SomeService» требует имени пользователя и пароля для проверки перед выполнением задач, поэтому решил, что лучше всего перейти в конструктор при создании, но никогда не сталкивался с требованиями времени выполнения для autofac. Я рассмотрел вопросAutofac - разрешение параметров времени выполнения без необходимости передавать контейнер и это кажется близким к тому, что мне нужно, но мне нужно больше отзывов о том, как это сделать.