このような質問がすでにあることは知っていますが、真剣に答えを理解していません (そして、それらについてコメントすることはできません)。
私はリフレクションにまったく慣れておらず、デリゲートにもかなり慣れていないため、これは私にとって非常に困難です。
少し前に、リフレクションを (初めて) 使用してメソッドを取得しました。次のようにしました (簡略化):
object perlinObj;
MethodInfo PerlinMethod = null;
//...
ConstructorInfo constructor = type.GetConstructor(Type.EmptyTypes);
perlinObj = constructor.Invoke(new object[] { });
PerlinMethod = type.GetMethod("GetValue", new Type[] { typeof(Vector3) });
//...
float PerlinFunction(Vector3 pos)
{
return (float)((Double)PerlinMethod.Invoke(perlinObj, new object[] { pos }));
}
これは機能しますが、メソッドを直接呼び出すよりもはるかに遅いという問題があります。そこで、どうにかしてそれをデリゲートに割り当ててから、invoke を使用する代わりにデリゲートを呼び出すことができるのではないかと考えました。(そうですよね?)
しかし、これを行う方法が見つかりません。msdn のドキュメントがわかりません: http://msdn.microsoft.com/en-us/library/ms228976.aspx (私がやろうとしているのと同じことをしているのかさえわかりません)、また、これを読んで正確に何をしなければならないかを理解していません: Assign method to delegate through reflection .
(そして、私が試したことはうまくいきませんでした)
では、私が提供したサンプルコードで何をしなければならないかを誰かに説明してもらえますか?