是否有可能将接口从 C# 传递到 C++。
interface IMessage
{
DoSomething();
}
我想将 IMessage 的实例传递给 C++ 代码并从那里调用“DoSomething”。
由于最初的提问者标记了 C++/CLI 问题,我认为这就是他想要的目标。
要将 C# 接口传递给 C++/CLI,只需声明 C++/CLI 方法以将接口作为参数。请务必指定^
, 因为接口必须通过句柄传递。不要忘记编辑 C++/CLI 项目的项目属性以引用包含 IMessage 的任何托管程序集。
public ref class MyClass
{
public:
static void MyMethod(IMessage^ message)
{
message->DoSomething();
}
};
如果您的意思是非托管 c++,那么您可以使用 COMVisible 属性从 C# 接口创建 COM 接口,即
[Guid("<a guid>")]
[ComVisible(true)]
interface IMessage
{
DoSomething();
}