मैं अपने Spring.Net ASP.Net MVC नियंत्रक निर्भरता इंजेक्शन के लिए MvcContrib का उपयोग कर रहा हूँ। मेरी निर्भरताएं मेरे कस्टमअेट्रिटी एक्शन फ़िल्टर में इंजेक्ट नहीं की जा रही हैं
कहें कि आपके पास एक एक्शनफ़िल्टर है जो ऐसा दिखता है:
सार्वजनिक वर्ग कस्टम विशेषता: एक्शनफ़िल्टर ऐट्रिब्यूट, आईस्कस्टअट्रिबेट {निजी आईएवम्सस् सर्विस भयानक सेवा; सार्वजनिक CustomAttribute () {} सार्वजनिक CustomAttribute (IAwesomeService भयानक सेवा) {this.awesomeService = awesomeService; } सार्वजनिक ओवरराइड शून्य OnActionExecuting (ActionExecutingContext FilterContext) {// कुछ काम करें}}
एक Spring.Net विन्यास अनुभाग के साथ जो ऐसा दिखता है:
& Lt; वस्तु आईडी = "कस्टम गुण" प्रकार = "Assembly.CustomAttribute, विधानसभा" एकलटन = "झूठी" & gt; & Lt; constructor-arg रेफरी = "AwesomeService" / & gt; & Lt; / वस्तु & gt;
और आप इस तरह की विशेषता का उपयोग करते हैं:
[कस्टम] सार्वजनिक FooController: नियंत्रक {// कुछ कार्य करें}
यहाँ कठिन हिस्सा यह है कि एक्शनफिल्टर प्रत्येक अनुरोध के साथ और एक संदर्भ में नया हो सकता है जो कि बाहर है स्प्रिंग जागरूक है मैंने अपने एक्शनफिल्टर कन्स्ट्रक्टर में स्प्रिंग "कंटिक्टेक्स्ट्रिस्ट्री" क्लास का इस्तेमाल करते हुए उसी परिस्थितियों को संभाला। दुर्भाग्यवश यह आपके कोड में स्प्रिंग विशिष्ट एपीआई उपयोग को पेश करता है, जो संभव हो, से बचने के लिए एक अच्छा अभ्यास है।
यहां मेरा कन्स्ट्रक्टर कैसा दिखता है:
सार्वजनिक MyAttribute () {CustomHelper = ContextRegistry.GetContext ()। GetObject ("कस्टमहेलर") IConfigHelper के रूप में; }
ध्यान रखें कि यदि आप एकाधिक स्प्रिंग संदर्भ लोड कर रहे हैं, तो आपको निर्दिष्ट करना होगा कि आप GetContext (...) विधि में किस संदर्भ को चाहते हैं।
No comments:
Post a Comment