Tại thời điểm này, tôi đang đưa mọi thứ vào Bộ điều khiển của mình một cách dễ dàng, trong một số trường hợp, xây dựng lớp ResolverServices của riêng tôi. Cuộc sống là tốt .
Những gì tôi không thể tìm ra cách làm là làm cho khung tự động đưa vào các lớp không phải bộ điều khiển. Những gì hoạt động là có khuôn khổ tự động đưa vào bộ điều khiển của tôi IOptions
, đó là cấu hình hiệu quả cho dự án của tôi:
public class MessageCenterController : Controller
{
private readonly MyOptions _options;
public MessageCenterController(IOptions<MyOptions> options)
{
_options = options.Value;
}
}
Tôi đang nghĩ liệu tôi có thể làm điều tương tự đối với các lớp học của riêng tôi. Tôi cho rằng tôi đang ở gần khi bắt chước bộ điều khiển, như thế này:
public class MyHelper
{
private readonly ProfileOptions _options;
public MyHelper(IOptions<ProfileOptions> options)
{
_options = options.Value;
}
public bool CheckIt()
{
return _options.SomeBoolValue;
}
}
Tôi nghĩ tôi thất bại là do đâu khi tôi gọi nó như thế này:
public void DoSomething()
{
var helper = new MyHelper(??????);
if (helper.CheckIt())
{
// Do Something
}
}
Vấn đề mà tôi đang theo dõi điều này là thực tế mọi thứ nói về DI đều đang nói về nó ở cấp bộ điều khiển. Tôi đã thử tìm kiếm nơi nó xảy ra trong Controller
mã nguồn đối tượng, nhưng nó trở nên điên rồ ở đó.
Tôi biết mình có thể tạo một thể hiện IOptions theo cách thủ công và chuyển nó cho phương thức MyHelper
khởi tạo, nhưng có vẻ như tôi có thể làm cho khung làm việc đó vì nó hoạt động cho Controllers
.
new
. Không bao giờ cho các đối tượng cần được giải quyết