2010-01-05 145 views
1

为了解决这个问题,下面是我的泛型类。将类库DLL暴露给COM使用

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

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

从本质上讲,这个类是负责为T类的List转换为HTML表(我省略了发电部分)。该错误我得到的是

Generic classes may not be exposes to COM. 

我已经看了几关于这个问题的帖子,但我并不真正了解他们。为了能够使用这个类,需要修改/添加什么?

谢谢。

回答

5

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 
} 
+0

我敢肯定你不能有通用基础类要么? –

+0

这个答案也是如此:http://stackoverflow.com/a/134779/25124 –