На этом этапе я с легкостью встраиваю элементы в свои контроллеры, в некоторых случаях создавая собственный класс 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
}
}
Проблема, которую я отслеживаю, - это практически все, что говорит о D, я говорю об этом на уровне контроллера. Я пытался выследить, где это происходит в Controller
исходном коде объекта, но там это становится немного сумасшедшим.
Я знаю, что могу вручную создать экземпляр IOptions и передать его MyHelper
конструктору, но похоже, что я смогу заставить фреймворк сделать это, поскольку он работает для Controllers
.
new
. Никогда для объектов, которые необходимо разрешить