इस बिंदु पर, मैं अपने नियंत्रकों में चीजों को आसानी से इंजेक्ट कर रहा हूं, कुछ मामलों में अपने स्वयं के रिज़ॉल्वर सेवा वर्ग का निर्माण कर रहा हूं। जीवन अच्छा है ।
मुझे यह पता नहीं चल सकता है कि गैर-नियंत्रक कक्षाओं में स्वचालित रूप से इंजेक्ट करने के लिए रूपरेखा कैसे प्राप्त करें। क्या काम करता है ढांचा स्वचालित रूप से मेरे नियंत्रक में इंजेक्ट 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
। कभी भी उन वस्तुओं के लिए जिन्हें हल नहीं किया जाना चाहिए