c# - 使用泛型将类库 DLL 公开给 COM

标签 c# generics .net-3.5 com

为了这个问题,这是我的通用类。

[ComVisible(true)]
public class HtmlTable<T> where T : class
{
    List<T> listToConvert;

    public HtmlTable(List<T> listToConvert)
    {
        this.listToConvert = listToConvert;
    }
}

本质上,这个类负责将类 T 的列表转换为 HTML 表(我省略了生成部分)。我得到的错误是

Generic classes may not be exposes to COM.

我已经阅读了几篇关于这个问题的帖子,但我并不真正理解它们。需要更改/添加什么才能使用此类?

谢谢。

最佳答案

COM 没有泛型的概念,因此不能向 COM 公开泛型类。

您可以做的是创建一个通用父类(super class)型,然后创建该通用父类(super class)型的非通用特定实现以向 COM 公开。

一个简单的例子:

public class HtmlTable<T> where T : class 
{ 
    List<T> listToConvert; 

    public HtmlTable(List<T> listToConvert) 
    { 
        this.listToConvert = listToConvert; 
    } 
} 

[ComVisible(true)]
public class StringHtmlTable : HtmlTable<String>
{
    // implementation goes here
}

关于c# - 使用泛型将类库 DLL 公开给 COM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2008786/

相关文章:

c# - 验证使用仅初始化 setter 初始化的 C# 对象

c# - 集合中的排序值仅在循环中可见

c# - HtmlAgilityPack 按名称获取元素

java - 如何解决 Future<CAP#1> 无法转换为 Future<Void> 的问题?

java - 类型参数不在其范围内

c# - 类属性中的字典有什么问题?

javascript - 如何从 HTML 表单向 Controller 提供数据

java - 在 Collection<?超T>

sql - ADO.NET Command.CommandText属性中可以有多个SQL指令吗?

c# - 我可以在 .NET/C# 中为 Microsoft Dynamics AX 编码吗?