Tại sao tôi có thể sử dụng câu lệnh VBScript for each
để lặp lại một đề mục System.Collections.ArrayList
, nhưng không phải là đối tượng Systems.Collections.SortedList
?Làm cho cảm giác của IEnumerable trong .Net COM Interop
Do sau:
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
Dòng
for each item in sList
tai nạn với
đối tượng không hỗ trợ tài sản hoặc phương pháp *.
Bằng cách thuộc tính này Tôi giả sử chúng có nghĩa là tài sản _NewEnum
. Nhưng tại sao _NewEnum
bị hiển thị bởi ArrayList
, nhưng không phải là SortedList
? Cả hai lớp thực hiện giao diện IEnumberable
mà từ việc tháo rời mscorelib.dll
dường như là giao diện chịu trách nhiệm thực hiện thuộc tính _NewEnum
(dispId
of -4).
Nếu bất kỳ ai cũng có thể làm sáng tỏ về hành vi tương tác COM khác nhau của các lớp tương tự này, tôi sẽ rất đánh giá cao.
Tôi biết tôi có thể sử dụng các thuộc tính khác được hiển thị bởi SortedList
để lặp qua bộ sưu tập. Tôi không hỏi cách lặp lại một số SortedList
. Tôi chỉ hỏi tại sao IEnumrable
dường như không được thực hiện trong phiên bản interop của SortedList
khi nó được thực hiện trong phiên bản interop của ArrayList
.