На этом этапе я легко вставляю вещи в свои контроллеры, в некоторых случаях создаю свой собственный класс 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
.
Ваша помощь приветствуется.