我需要创建一个.NET程序集,它通过COM Interop作为COM对象可见,这样它就可以为VBScript或JScript程序提供一个集合。
当我使用像ArrayList这样的简单集合时,它会流经COM互操作,并且可以使用这样的程序在VBScript中迭代:
Dim s, foo
Set foo = CreateObject("Whatever.Collection")
For Each s In foo
WScript.Echo s
Next
现在,如果不使用ArrayList,我会使用基于通用集合类的somethign,例如List<string>
或System.Collections.Specialized.StringCollection
,这似乎不适用于VBScript。我在For Each循环中遇到错误,比如
Microsoft VBScript运行时错误:所需对象:
所以,似乎有一些我在这里遗失的魔法酱。如何使.NET集合流经COM Interop并在VBScript和JScript中正常工作?
答案 0 :(得分:1)
我开始寻找是否有解决方案,因为我认为不可能。看起来Rick Strahl有solution。
修改:这是SO What are alternatives to generic collections for COM Interop?
的另一个解决方案