静的な.Netメソッドがあると仮定しましょう
static void RegisterDelegate(Action<array<Object^>^>^ handler);
一部のアセンブリで定義されているため、変更できません。
私は次のコードを持っています:
static void HandleCallback(Action<array<Object^>^>^ handler, NATIVE_CPP_TYPE *nativeObject){
//some code here
}
static void TestCall(NATIVE_CPP_TYPE *nativeObject){
//RegisterDelegate(??);
}
ここで、NATIVE_CPP_TYPEはシリアル化不可能でネイティブのみのタイプであり、どちらも変更できません。
を呼び出すとTestCall(ptrToObj)、タイプのデリゲートが作成されますAction<array<Object^>^>。このデリゲートはHandleCallback、呼び出されたときに呼び出し、独自の引数(Object配列)と、TestCall関数に最初に渡されたネイティブObjectへのポインターの両方を渡す必要があります。したがって、ポインタはある種のクロージャに格納する必要があります。
これをどのように行うことができるか考えていますか?名前空間について考えましたSystem::Linq::Expressionsが、そのような式でネイティブオブジェクトをカプセル化することはできません。
前もって感謝します!