我正在尝试使用泛型列表作为ServicedComponent类的属性...
public class MyCOM : ServicedComponent {
public enum MyEnumType {
Value1, Value2, Value3
}
public List<MyEnumType> MyList { private set; get; }
public MyCOM()
{
MyList = new List<MyEnumType>();
}
}代码编译时没有错误,但是当我尝试在来自不同类的com对象上使用MyList属性时,没有值添加到列表中。Google“告诉我”,我不能在组件上使用泛型,但我还没有找到一个好的解释为什么会这样,以及一个好的解决问题的方案。
有人能帮帮我吗?
发布于 2008-10-02 11:03:10
来自MSDN:
Interoperating Using Generic Types
COM模型不支持泛型类型的概念。因此,泛型类型不能直接用于COM互操作。
不支持泛型的原因很简单,泛型是在运行时构造的类型,因此对于COM可以引用的构造类型没有静态接口声明。在你的例子中,List< MyEnumType >直到CLR构造它才作为类型存在,所以COM不能用and标识符(GUID)来引用它。
这就是解决方法的来源,如果您的泛型类型实现了一个非泛型接口,那么它们就可以用于使用非泛型接口的com互操作。
https://stackoverflow.com/questions/161704
复制相似问题