मैं एक अमूर्त वर्ग है:Ninject: एक सामान्य वर्ग के लिए डिफ़ॉल्ट और विशिष्ट बाइंडिंग
public abstract class Validator<T> : IValidator
और वर्गों है कि विशिष्ट प्रयोजनों के लिए इस वर्ग को लागू की एक जोड़ी है, उदा
public sealed class NewsValidator : Validator<News>
अब Ninject का उपयोग कर मैं निम्नलिखित की तरह निर्भरता इंजेक्शन क्या करना चाहते हैं (इस विशेष कोड काम नहीं कर रहा):
Bind<Validator<News>>().To<NewsValidator>();
Bind(typeof(Validator<>)).To(typeof(NullValidator<>));
तो क्या मैं हासिल करना चाहते हैं कि
Validator<News>
है कक्षा "न्यूज वैलिडेटेटर" से बंधे रहना चाहिए, लेकिन यदि इस वर्ग के किसी भी अन्य बाध्य संस्करण का अनुरोध नहीं किया गया है, तो
कहें 0Validator<Article>
Validator<SomethingElse>
जो एक डिफ़ॉल्ट कक्षा (NullValidator) से बंधे होना चाहिए। उपरोक्त इस्तेमाल किए गए कोड का उपयोग एक अपवाद फेंकता है, हालांकि, क्योंकि यह वैलिडेटर < समाचार> दोनों को न्यूज़ वैलिडेटर के साथ-साथ नलवैलिएटर से जोड़ता है।
मैं इसे कैसे कार्यान्वित कर सकता हूं? सामान्य वर्ग के विशेष प्रकार व्यक्तिगत वर्गों के लिए बाध्य होना चाहिए। जेनेरिक वर्ग के अन्य सभी प्रकार जिन्हें स्पष्ट रूप से बाध्य नहीं किया गया था, उन्हें डिफ़ॉल्ट कक्षा से बंधना चाहिए।
कुछ सुझावों के बारे में वास्तव में खुश होंगे! धन्यवाद!
व्हाओ :) अविश्वसनीय, वह एक आकर्षण की तरह काम कर रहा है। आप कैसे जानते हैं?! "IMissingBindingResolver" की खोज करते समय भी Google को वास्तव में बहुत कुछ नहीं मिलता है।वैसे भी, यह बिल्कुल सही है, बहुत बहुत धन्यवाद !! – Oliver