VB6 to C#: IUnknown

本文关键字:IUnknown to VB6 | 更新日期: 2023-09-27 18:08:24

我在VB6中有一个属性,我正试图转换为c#。内容如下:

Public Property Get NewEnum() As IUnknown
    'this property allows you to enumerate
    'this collection with the For...Each syntax
    Set NewEnum = m_coll.[_NewEnum]
End Property

m_coll是私有变量,现在是ArrayList,而不是以前的Collection

m_coll正在用我自己的一个类对象填充。可以看到,该属性的类型为IUnknown

在这一点上,我可能只是没有正确地思考,但是在c#中有类似的属性吗?

VB6 to C#: IUnknown

如果你想能够在一个类上做一个foreach(就像你可以通过在vb6中暴露NewEnum()作为IUnknown)你可以让你的类实现IEnumerable -例如:

   public class MyClass : IEnumerable 
    {
        private List<string> items = new List<string>();
        public MyClass()
        {
            items.Add("first");
            items.Add("second");
        }

        public IEnumerator GetEnumerator()
        {
            return items.GetEnumerator();
        }
    }

允许你这样使用它:

  MyClass myClass =new MyClass();
            foreach (var itm in myClass)
            {
                Console.WriteLine(itm);
            }

为了简单起见,我使用了List<string>,但是您也可以使用List<yourCustomClass>