创build一个能够使用VB.NET进行循环的COM类

Excel / VBA在我工作的组织中非常广泛地使用。为了使事情变得更容易,我正在使用.NET / VS2010中一些广泛使用的COM类来使用VBA。

不过,我似乎无法实现一个支持每个循环的COM对象。 这种行为如何实施?

要指定一个位:

在许多情况下,我将创build一些类(让它称为SomeClass)和一个附带的专用集合类(让我们称之为SomeClassCollection)。 在纯.NET中,这通常是没有必要的,因为我可以简单地为通用容器(例如List(Of SomeClass))创build必要的专门扩展。 在VBA / COM中,但是我需要为大多数自定义类创build一个单独的专用集合类。

对我来说,创buildSomeClassCollection COM兼容对象的最明显的方法是inheritance一些通用的.NET集合,例如List(Of SomeClass),然后创build添加特定的函数以及使基本function和属性COM可见(例如添加,删除,计数等)

因为我inheritance了一个.NET集合,每个集合都支持(在.NET中),我认为有可能以某种方式将这个能力传递给COM集合类(参考工作表,工作簿等)在Excel中支持每个)。

一般来说,你需要实现一个COM可见类,它暴露了一个带有签名IEnumerator GetEnumerator()的方法,并用DISPID -4(DISPID_NEWENUM)

这里有更详细的解释