将泛型代码(List<;T>;)导出到COM

本文关键字:COM gt List 泛型 lt 代码 | 更新日期: 2023-09-27 18:22:15

COM不支持泛型?复制这个List<T>以使其在tlh文件中COM可见的最佳方法是什么。编辑::c#::

[ComVisible(true)]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [Guid("FA677671-5E26-4307-AD2B-19BF1E7AFF8B")]
    public interface IEvents
    {
        IEvents[] CreateListeners();
    }

在C++中,我有

CComSafeArray<CSharp::IEvents> ppSA;
    pInterface->CreateListeners(ppSA->GetSafeArrayPtr());

我的问题是,我应该在这个创建实例函数中做什么,以便复制这个语句List evt=new List();在托管c#中?

将泛型代码(List<;T>;)导出到COM

正确,不支持泛型类型:

COM模型不支持泛型类型的概念。因此,泛型类型不能直接用于COM互操作。

http://msdn.microsoft.com/en-us/library/ms229590.aspx

也许这就是开始的地方:

C#将类公开给COM-泛型集合