假设有一个静态的 .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(??);
}
whereNATIVE_CPP_TYPE
是一些不可序列化且仅本机的类型,也无法修改。
调用TestCall(ptrToObj)
现在应该创建一个类型的委托Action<array<Object^>^>
。这个委托应该在被调用HandleCallback
时调用并传递它自己的参数(对象数组)和指向最初传递给TestCall
函数的本机对象的指针。因此,指针需要存储在某种闭包中。
你知道如何做到这一点吗?我考虑过System::Linq::Expressions
命名空间,但是我不能用那种表达式封装原生对象。
提前致谢!