कैसल विंडसर पंजीकरण की मेरी वर्तमान समझ यह है कि कोई केवल रूट घटक पर संकल्प को कॉल करके पंजीकरण को मान्य कर सकता है। लेकिन चूंकि विंडसर का घटक मॉडल प्रत्येक घटक की निर्भरताओं को जानता है, इसलिए यह जांचना संभव होना चाहिए कि सभी निर्भरता वास्तव में कुछ भी तत्काल किए बिना संतुष्ट हो सकती हैं। ऐसा करने का मुख्य कारण पंजीकरण के लिए एक इकाई परीक्षण होना है जिसके लिए मुझे उन घटकों को रोकने की आवश्यकता नहीं है जो स्टार्ट-अप पर बाहरी संसाधनों को कॉल करते हैं।कैसल विंडसर: क्या एक संकल्प कॉल के बिना पंजीकरण मान्य करने का कोई तरीका है?
उदाहरण के लिए। मैं एक वर्ग रूट IChild पर एक निर्भरता है कि है:
public class Root : IRoot
{
private IChild child;
public Root(IChild child)
{
this.child = child;
}
}
अगर मैं IRoot के रूप में रूट रजिस्टर, लेकिन एक IChild रजिस्टर नहीं है। जब मैं इस तरह संकल्प फोन:
MyNamespace.Root is waiting for the following dependencies:
Services:
- MyNamespace.IChild which was not registered.
वहाँ की तरह कुछ है:
var container = new WindsorContainer().Register(
Component.For<IRoot>().ImplementedBy<Root>()
);
container.Resolve<IRoot>();
मैं कोई त्रुटि मिलती है
container.TestResolve<IRoot>();
कि निर्भरता ग्राफ चलना और जाँच करेगा कि सभी निर्भरता कर सकते हैं संतुष्ट हो, लेकिन जो वास्तव में कुछ भी तुरंत नहीं करता है?
अच्छा परीक्षा पद्धति :) – bevacqua
इस कोड को नहीं रह गया है संकलित: प्रकार 'Castle.Windsor.Diagnostics.IPotentiallyMisconfiguredComponentsDiagnostic' सामान्य प्रकार या विधि 'Castle.Windsor में प्रकार पैरामीटर' TDiagnostic 'के रूप में इस्तेमाल नहीं किया जा सकता डाइग्नोस्टिक्स.आईडीआईग्नोस्टिक्सहोस्ट.गेटडिआग्नोस्टिक() '। वहाँ 'Castle.Windsor.Diagnostics.IDiagnostic
पेरी, कोड .net 4 – samy