मुझे कुछ सामान्य तरीकों के साथ एक इंटरफ़ेस मिला है, और मैं कक्षा के उदाहरण को स्वीकार करने के लिए ओवरलोड के साथ एक विधि को कार्यान्वित करना चाहता था, या उसके पीके मान (जो या तो एक इंट या GUID है लेकिन भिन्न होता है)।विधि ओवरलोड पर सामान्य बाधा
मैं इन उदाहरणों के समान तरीकों को जोड़ा गया:
void DoSomething<TKey>(TKey key) where TKey: struct;
void DoSomething<TModel>(TModel model) where TModel : class;
इन के दूसरे पर 'DoSomething' विधि नाम हाइलाइट किया गया है, और त्रुटि
प्रकार 'ISomeStuff' पहले से ही परिभाषित करता है के समान पैरामीटर प्रकार वाले 'DoSomething' नामक एक सदस्य।
मैं इस बात से हैरान हूं क्योंकि मैंने पैरामीटर द्वारा स्पष्ट रूप से विभिन्न प्रकार के रूप में परिभाषित किया है: एक वर्ग और दूसरा एक संरचना है।
हस्ताक्षर अलग करने के लिए पर्याप्त क्यों नहीं है?
संभावित डुप्लिकेट [जेनेरिक की कमी है, जहां टी: struct और जहां टी: वर्ग] (http://stackoverflow.com/questions/2974519/generic-constraints-where-t-struct-and-where- टी वर्ग)। एरिक लिपर्ट का लेख भी देखें [यहां] (http://blogs.msdn.com/b/ericlippert/archive/2009/12/10/constraints-are-not-part-of-the-ignature.aspx)। –
@ फ़्रेडरिक: मुझे यह कैसे याद आया !!! –
स्पष्ट रूप से साइडबार में "संबंधित" फलक इसे नहीं चुनता था, इसलिए यह सामान्य से अधिक कठिन हो सकता है;) –