2012-02-28 16 views
7

में IENumerable की भावना बनाना System.Collections.ArrayList ऑजेक्ट करने के लिए मैं VBScript for each कथन का उपयोग क्यों कर सकता हूं, लेकिन Systems.Collections.SortedList ऑब्जेक्ट नहीं?.NET COM इंटरऑप

निम्नलिखित को देखते हुए:

set aList = Server.CreateObject("System.Collections.ArrayList") 
aList.Add "a" 
aList.Add "b" 
aList.Add "c" 
for each item in aList 
    ' do something 
next 

set sList = Server.CreateObject("System.Collections.SortedList") 
sList.Add "a", 1 
sList.Add "b", 2 
sList.Add "c", 3 
for each item in sList 
    ' do something 
next 

लाइन के साथ

वस्तु

for each item in sList 

दुर्घटनाओं * इस संपत्ति या विधि का समर्थन नहीं करता।

इस संपत्ति तक मुझे लगता है वे _NewEnum संपत्ति मतलब है। लेकिन _NewEnumArrayList द्वारा खुलासा क्यों किया जा रहा है, लेकिन SortedList नहीं है? दोनों वर्गों IEnumberable इंटरफ़ेस जो वियोजन से mscorelib.dll इंटरफ़ेस _NewEnum संपत्ति (-4 की dispId) को लागू करने के लिए जिम्मेदार हो गया लगता है को लागू।

यदि कोई भी इन समान वर्गों के विभिन्न COM इंटरऑप व्यवहार पर कुछ प्रकाश डाल सकता है तो मैं बहुत सराहना करता हूं।

मैं जानता हूँ कि मैं संग्रह से अधिक पुनरावृति करने के लिए अन्य संपत्तियों के SortedList द्वारा उजागर उपयोग कर सकते हैं। मैं नहीं पूछ रहा हूं कि SortedList को फिर से कैसे चालू किया जाए। मैं सिर्फ यह पूछ रहा हूं कि IEnumrableSortedList के इंटरऑप संस्करण में लागू क्यों नहीं होता है जब इसे ArrayList के इंटरऑप संस्करण में कार्यान्वित किया जाता है।

उत्तर

3

हालांकि SortedList IEnumerable लागू करता है यह एक ओवरलोड GetEnumerator() विधि जो IDictionaryEnumerator देता है। आपको ओवरलोड का उपयोग करने के लिए स्पष्ट रूप से आईन्यूमेरेबल पर डालना होगा जो आईन्यूमेरेटर लौटाता है, जहां आपकी समस्या है।

डिफ़ॉल्ट प्रगणक ArrayList की तरह ही व्यवहार नहीं है - यह बल्कि तार जिसकी आप अपेक्षा कर रहा हो सकता है की तुलना में प्रत्येक आइटम के लिए एक DictionaryEntry वापस आ जाएगी।

मेरा अनुमान होगा कि आप शायद बजाय मान संपत्ति का उपयोग करना चाहते हैं और, आप संख्या के आधार पर क्रमित कर रहे हैं, आप विधि जोड़ें तर्क दूसरी तरह के आसपास का उपयोग करना चाहते अर्थात

sList.Add 1, "a" 
संबंधित मुद्दे