मैं सामान्य नेटी निर्भरता इंजेक्शन एक्सटेंशन के साथ एक महंगी कक्षा को तुरंत चालू करने के लिए सामान्य आलसी वर्ग का उपयोग करने की कोशिश कर रहा हूं। मैंने आईआरपीओ प्रकार पंजीकृत किया है, लेकिन मुझे यकीन नहीं है कि आलसी वर्ग का पंजीकरण कैसा दिखता है या यदि यह भी समर्थित है। समाधान के लिए मैं इस विधि का इस्तेमाल किया है http://mark-dot-net.blogspot.com/2009/08/lazy-loading-of-dependencies-in-unity.htmlकरता है .नेट कोर निर्भरता इंजेक्शन समर्थन आलसी <T>
config:
public void ConfigureService(IServiceCollection services)
{
services.AddTransient<IRepo, Repo>();
//register lazy
}
नियंत्रक:
public class ValuesController : Controller
{
private Lazy<IRepo> _repo;
public ValuesController (Lazy<IRepo> repo)
{
_repo = repo;
}
[HttpGet()]
public IActionResult Get()
{
//Do something cheap
if(something)
return Ok(something);
else
return Ok(repo.Value.Get());
}
}
"एक महंगी कक्षा को तत्काल करने के लिए"। वह वर्ग महंगा क्यों बना रहा है? वर्गों को बनाने के लिए महंगा नहीं होना चाहिए। उनके रचनाकारों को [सरल] होना चाहिए (http://blog.ploeh.dk/2011/03/03/InjectionConstructorsshouldbesimple/), तेज़ और [विश्वसनीय] (http://blog.ploeh.dk/2011/03/04/ Composeobjectgraphswithconfidence /)। – Steven
नहीं (भंडार/संदर्भ/...) वर्ग को अपने कन्स्ट्रक्टर में कनेक्शन खोलना चाहिए। –
यह महंगा है जिसका मतलब है कि मैं नियंत्रण नहीं कर सकता। – ATerry