Мне кажется, что плохой идеей иметь службу домена требуется экземпляр IOptions для передачи его конфигурации. Теперь у меня есть дополнительные (ненужные?) Зависимости в библиотеке. Я видел множество примеров инъекций IOptions по всему Интернету, но я не вижу дополнительных преимуществ.
Почему бы просто не ввести настоящий POCO в службу?
services.AddTransient<IConnectionResolver>(x =>
{
var appSettings = x.GetService<IOptions<AppSettings>>();
return new ConnectionResolver(appSettings.Value);
});
Или даже используйте этот механизм:
AppSettings appSettings = new AppSettings();
Configuration.GetSection("AppSettings").Bind(appSettings);
services.AddTransient<IConnectionResolver>(x =>
{
return new ConnectionResolver(appSettings.SomeValue);
});
Использование настроек:
public class MyConnectionResolver
{
// Why this?
public MyConnectionResolver(IOptions<AppSettings> appSettings)
{
...
}
// Why not this?
public MyConnectionResolver(AppSettings appSettings)
{
...
}
// Or this
public MyConnectionResolver(IAppSettings appSettings)
{
...
}
}
Почему дополнительные зависимости? Что IOptions покупают меня вместо старого школьного способа инъекции?