क्षमा करें अगर यह एक डुप्ली है, लेकिन मुझे वहां विभिन्न प्रकार की बाधाओं और जेनेरिक प्रश्नों को फ़िल्टर करने के लिए कीवर्ड का सही कॉम्बो नहीं मिल रहा था (जैसा कि बहुत कुछ है)।गैर-सख्त एकाधिक इंटरफ़ेस प्रकार पैरामीटर बाधाएं?
मैं दो इंटरफेस है - उन्हें IOnline और IOffline फोन करते हैं।
वे निकट से संबंधित हैं कि वे लगभग समान अनुबंधों का वर्णन करते हैं, लेकिन उनके बीच महत्वपूर्ण अंतर एक संदर्भ है जिसमें ठोस कार्यान्वयन का उपयोग किया जाएगा। यह वास्तव में मेरी परिस्थितियों में नहीं है, लेकिन यह समस्या को अच्छी तरह से दिखाता है।
तब मेरे पास कुछ विधियां हैं जो इन इंटरफेस के ठोस कार्यान्वयनकर्ताओं के खिलाफ काम करती हैं। कभी-कभी ये विधियां केवल एक प्रकार से निपटना चाहती हैं, न कि दूसरे।
काफी सरल:
public void DoStuff<T>(string foo) where T : IOnline {}
किकर तरीकों कि किसी भी प्रकार पर काम कर सकते हैं के लिए कोड लागू कर रहा है। मैंने सोचा कि यह सही होगा, लेकिन संकलन त्रुटि को पढ़ने में, मेरी उम्मीद है कि बाधा का अर्थ "किसी भी प्रकार टी को सामान्य रूप से यहां उपयोग करने की इजाजत दी जाएगी यदि वे IOnline या IOffline लागू करते हैं", वास्तव में इसका अर्थ है "किसी भी प्रकार की अनुमति दें यदि वे दोनों को लागू करते हैं तो टी सामान्य रूप से यहां उपयोग किया जाएगा "।
public void DoStuff<T>(string foo) where T : IOnline, IOffline {}
ही नाम के साथ दो अलग-अलग तरीकों को लागू करने की कोशिश कर रहा है, लेकिन विभिन्न बाधाओं में विफल रहता है के रूप में है वहाँ स्पष्ट अस्पष्टता मुद्दों - अधिक भार नहीं हम के बाद से पैरामीटर सूची में एक ही है (के बाद से वांछित व्यवहार के समान है)।
मैं प्रत्येक दो अलग अलग तरीकों के लिए दो अलग-अलग नाम, इस्तेमाल कर सकते हैं उचित बाधा के साथ है, लेकिन वह kludgy लगता है और अन्य बातों गधा ... साध्य में दर्द होने के लिए नीचे की ओर है, लेकिन आदर्श नहीं।
मुझे लगता है कि यहां कुछ ऐसा होना चाहिए जो मुझे याद आ रहा है ... मुझे सामान्य भूमि में पूरी तरह से सहज महसूस होता है लेकिन यह पहली बार है जब मुझे कभी भी पूरा करना पड़ता है और मुझे लगता है कि मैं ' मैं बस अपने पहियों एटीएम कताई।
पूरी तरह से ईमानदार होने के लिए, मैंने हाल ही में सीखा है कि सी # समर्थित इंटरफेस विरासत। देव काम के दस वर्षों में, जरूरत कभी खत्म नहीं हुई थी। इसे एक भंवर देना होगा और देखें कि आखिरकार मुझे वह जगह मिलती है जहां मुझे होना चाहिए। – bakasan