完全なリストではありませんが、次の方法を使用して C++ プログラムで .NET ライブラリをホストしています。
CorBindToRuntimeEx()
GetDefaultDomain()
CreateInstance()
Invoke()
.NET クラスに対応する C++ クラスがあります。各クラス インスタンスには が含まれておりCComPtr<IDispatch>
、これを使用して関数を呼び出し、メンバー変数を取得/設定します。
これは正常に機能していますが、C++ クラスをコピーすると、最終的に 2 つの C++ クラス インスタンスが同じ .NET インスタンスを指すことになります。あるインスタンスで変数値を変更すると、別のインスタンスに反映されます。
したがって、各 C++ クラス インスタンスが 1 つの一意の .NET クラス インスタンスを持つように、IDispatch ポインターを複製したいと考えています。を呼び出すことはできますCreateInstance()
が、さまざまな理由から、ライブラリとクラスの名前を把握するのは不便です。
tl;dr
クラス/ライブラリ名を検索せずに、.NET でサポートされている IDispatch ポインターを複製するにはどうすればよいですか?
ありがとう!