这只是关于如何为COM导入编写代码的问题。关于如何正确声明互操作接口的说明
我的正确实施的互操作界面的理解是,主要标准是:
- 所有方法签名必须以兼容的方式
- 方法必须准确显示在相同的顺序相匹配。 Net接口与非托管接口一样
- 当非托管接口继承自另一个非托管接口时,托管实现必须首先声明基本级接口成员,从最底层接口开始。
我的问题是;如果我正在导入的接口从另一个接口继承并覆盖/隐藏基接口中的一个或多个成员,我该如何处理成员出现的顺序?接口成员声明去了哪里?首先,基础接口在哪里声明?或者从原来的位置移除并放置在派生接口声明的位置?
[uuid(31d1c294-1dd2-11b2-be3a-c79230dca297)]
interface BaseComInterface
{
void method1();
void method2();
void method3();
}
[uuid(fab51c92-95c3-4468-b317-7de4d7588254)]
interface DerivedComInterface : BaseComInterface
{
void method1();
void method4();
void method5();
}
现在的C#代码:
[Guid("fab51c92-95c3-4468-b317-7de4d7588254"), ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IDerivedComInterface
{
void method1(); // do I remove this one?
void method2();
void method3();
void method1(); // or this one?
void method4();
void method5();
}
很好的答案,非常丰富,谢谢! – 2009-10-25 19:01:12