2
Refを介してrefクラスインスタンス上でネイティブポインタを返すメソッドを呼び出そうとしています。Refを介してrefクラスインスタンス上のメソッドを呼び出すと、ネイティブポインタが返されます。
例REFクラス・ヘッダ:
public ref class MyRefClass : public IDisposable
{
public:
MyNativeType* GetNativeInstance();
//Rest of the header...
}
ここではデリゲートを作成しようとする場合、このデリゲートを
delegate MyNativeType* GetNativeInvoker();
を用いた反射
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()
}
に失敗した試みの一例ですobjectがtを持つrefクラスのインスタンスであっても、バインドはArgumentException
で失敗します彼は方法 "GetNativeInstance"(のようなMyRefClass
)。この問題は、Object^
という事実以外のコンパイル時にobjの型について何も知らなくても解決されなければならない。
ありがとうございます。MethodInfoを使用してください。私は間違ってCreateDelegateがメソッドにバインドするリフレクションを使用していると推測します。ここで私が気になる主なことは、GetNativeInvokerがデリゲート型であると思ったことです。戻り値にはこれと関連がありますか? – insipid
Erm、私がコードを作業したときには意味がありました。もう覚えていない。限り、それは動作します。 –