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();
}