這只是關於如何爲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