मेरे पास एक संग्रह है जो एक इंटरफ़ेस लागू करता है जो IList < टी> और सूची दोनों को बढ़ाता है।Generic.IList <T> के बीच कॉल अस्पष्टता को हल करने के लिए कैसे करें। यह [] और IList.this []?
public Interface IMySpecialCollection : IList<MyObject>, IList { ... }
इसका मतलब है कि मेरे पास सूचकांक के दो संस्करण हैं।
काश सामान्य कार्यान्वयन प्रयोग की जाने वाली है, इसलिए मुझे लगता है कि एक सामान्य रूप से लागू:
public MyObject this[int index] { .... }
मैं केवल क्रमबद्धता के लिए IList संस्करण की आवश्यकता है, तो मैं यह स्पष्ट रूप से लागू है, यह छिपा रखने के लिए:
object IList.this[int index] { ... }
लेकिन, मेरा इकाई परीक्षण में, निम्नलिखित एक कॉम में
MyObject foo = target[0];
परिणाम piler त्रुटि
कॉल निम्न विधियों या गुण
मैं थोड़ा इस पर हैरान हूँ के बीच अस्पष्ट है; मुझे विश्वास है कि मैंने इसे पहले किया है और यह ठीक काम करता है। मुझे यहां क्या समझ नहीं आ रहा है? मैं आईएलआईस्ट < टी> और एक ही इंटरफ़ेस के भीतर सहयोग करने के लिए IList कैसे प्राप्त कर सकता हूं?
संपादित IList < टी>नहीं लागू IList करता है, और मैं क्रमबद्धता के लिए IList को लागू करना चाहिए। मुझे कामकाज में दिलचस्पी नहीं है, मैं जानना चाहता हूं कि मैं क्या खो रहा हूं।
फिर से संपादित करें: मुझे आईएलिस्ट को इंटरफ़ेस से छोड़ना पड़ा और इसे मेरी कक्षा में ले जाना पड़ा। मैं ऐसा नहीं करना चाहता, क्योंकि इंटरफ़ेस को कार्यान्वित करने वाले वर्गों को अंततः Xaml पर क्रमबद्ध किया जा रहा है, जिसके लिए आईडीकेर या IList को लागू करने के लिए संग्रह की आवश्यकता है ...
मैं पूछ सकता है कि कैसे आप एक कस्टम इंडेक्सर serializing कर रहे हैं? जब मैंने कस्टम इंडेक्सर (डब्ल्यूसीएफ के लिए) को इंडेक्स करने की कोशिश की है, तो मुझे एएसपी पीले-स्क्रीन-ऑफ-डेथ संदेश मिलता है जिसमें कहा गया है कि कस्टम इंडेक्सर्स को क्रमबद्ध नहीं किया जा सकता है। अंततः मैंने इस विचार को छोड़ दिया। –