【问题标题】:Exposing class library DLL to COM with generics使用泛型向 COM 公开类库 DLL
【发布时间】:2011-01-01 19:13:36
【问题描述】:

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

[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.

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

谢谢。

【问题讨论】:

    标签: c# generics .net-3.5 com


    【解决方案1】:

    COM 没有泛型的概念,因此泛型类不能暴露给 COM。

    您可以做的是创建一个泛型超类型,然后创建该泛型超类型的非泛型特定实现以公开给 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
    }
    

    【讨论】:

    • 我很确定你也不能有泛型基类?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2015-12-25
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 2014-01-20
    相关资源
    最近更新 更多