実行時にいくつかのアセンブリをロードし、Reflections(MethodInfo.Invoke)を使用してそれらのアセンブリにメソッドを呼び出しています。
ここで、これらの呼び出しを非同期にします。だから私はDelegate.BeginInvoke()を使うことを考えています。しかし、実行時に関数名を指定してデリゲートインスタンスを作成する方法がわかりません。(私が見るすべての例では、コンパイル時にデリゲートインスタンスターゲットが解決されています。)呼び出されるメソッドを含むMethodInfoオブジェクトがあります。これを行う方法はありますか?
public void Invocation(Object[] inputObjs)
{
public delegate string DelegateMethodInfo(int num);
Assembly assm = Assembly.Load(assemblyName);
Type type = assm.GetType(className);
Type[] ctorParams = new Type[0];
Object[] objs = new Object[0];
ConstructorInfo ctorInf = type.GetConstructor(ctorParams);
Object classObj = ctorInf.Invoke(objs);
MethodInfo methodInf = type.GetMethod(methodName);
// Need asynchronous invocation.
//Object retObj = methodInf.Invoke(classObj, inputObjs);
DelegateMethodInfo del = new DelegateMethodInfo(???); // How to instantiate the delegate???
del.BeginInvoke((int)inputObjs[0], null, null);
}