我正在尝试使用通用列表作为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
属性时,不会将任何值添加到列表中。谷歌"告诉我"我不能在组件上使用泛型,但我还没有找到一个很好的解释,为什么会这样,也没有解决这个问题的好方法。
有人可以帮助我吗?
来自 MSDN:
不支持泛型使用泛型类型进行互操作
COM 模型不支持 泛型类型的概念。 因此,泛型类型不能 直接用于 COM 互操作。
的答案非常简单,泛型是在运行时构造的类型,因此没有 COM 可以引用的构造类型的静态接口声明。在你的案例 List 中
这就是解决方法的来源,如果您的泛型类型实现了非泛型接口,则可以使用非泛型接口将它们用于 com 互操作。