首页 > 解决方案 > 任何继承IUnknown的接口都可以做成COM接口吗?

问题描述

我需要调用从 C# 继承 IUnknown的IWeatherStation接口的方法。如果可能的话,我该怎么做?

谢谢

标签: c#com

解决方案


当然。这里有一个例子:Example COM Class (C# Programming Guide)

您应该做的第一件事是找到接口的真实(idl 或 c/c++)定义。对于此 SDK,它位于例如 <setup path>\Lockheed Martin\Prepar3D v4 SDK 4.3.29.25520\inc\PDK\IWeatherSystem.h头文件中。这是您将获得方法和接口 ID(又名“IID”)的地方。

所以在你的情况下,它会是这样的:

[Guid("e4452b96-16ba-4e82-9342-aa37af1f5c26")] // IID
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IWeatherStationV430 // IUnknown base interface is implicit
{
    bool IsValid();
    float GetSurfaceWind();
    void SetSurfaceWind(float aVal);
    // etc...
}

推荐阅读