На даний момент я з легкістю ввожу речі у свої контролери, в деяких випадках будуючи власний клас ResolverServices. Життя добре .
Чого я не можу зрозуміти, як це зробити, так це отримати фреймворк для автоматичного введення в не-контролерні класи. Що працює, це те, що фреймворк автоматично вводиться в мій контролер IOptions
, що фактично є конфігурацією для мого проекту:
public class MessageCenterController : Controller
{
private readonly MyOptions _options;
public MessageCenterController(IOptions<MyOptions> options)
{
_options = options.Value;
}
}
Я думаю, чи можу я зробити те саме для своїх уроків. Я припускаю, що я близький, коли імітую контролер, наприклад:
public class MyHelper
{
private readonly ProfileOptions _options;
public MyHelper(IOptions<ProfileOptions> options)
{
_options = options.Value;
}
public bool CheckIt()
{
return _options.SomeBoolValue;
}
}
Я думаю, що я не можу, коли називаю це так:
public void DoSomething()
{
var helper = new MyHelper(??????);
if (helper.CheckIt())
{
// Do Something
}
}
Проблема, яку я маю відстежувати, - це практично все, що говорить про DI, говорить про це на рівні контролера. Я намагався шукати, де це відбувається, у Controller
вихідному коді об'єкта, але там стає божевільним.
Я знаю, що можу вручну створити екземпляр IOptions і передати його MyHelper
конструктору, але, схоже, я мав би змогу змусити фреймворк це зробити, оскільки він працює Controllers
.
new
. Ніколи щодо об’єктів, які слід вирішити