Я пытаюсь вызвать метод для экземпляра класса ref с помощью отражения, которое возвращает собственный указатель.
Пример заголовка класса ref:
public ref class MyRefClass : public IDisposable
{
public:
MyNativeType* GetNativeInstance();
//Rest of the header...
}
вот пример неудачной попытки отражения
void InvokeTheMethod(Object^ obj)
{
MyNativeType* myNative;
GetNativeInvoker^ del = (GetNativeInvoker^) Delegate::CreateDelegate(GetNativeInvoker::typeid, obj, "GetNativeInstance");
//get pointer and use if bind succeeds myNative = del();
//else handle the case where the Object does not have GetNativeInstance()
}
с использованием этого делегата
delegate MyNativeType* GetNativeInvoker();
При попытке создать делегат связывание завершается неудачно с ArgumentException
, даже если объект является экземпляром класса ref, который имеет метод "GetNativeInstance" (например, MyRefClass
). Эту проблему нужно решить, ничего не зная о типе obj во время компиляции, кроме факта, что это Object^
.