アセンブリをロードし (その名前は文字列に格納されます)、リフレクションを使用して "CustomType MyMethod(byte[] a, int b)" というメソッドがあるかどうかを確認し、それ以外の場合は呼び出すか、例外をスローします。私はこのようなことをすべきだと思いますが、誰かがそれを行う最善の方法について同じアドバイスを提供していただければ幸いです:
Assembly asm = Assembly.Load("myAssembly"); /* 1. does it matter if write myAssembly or myAssembly.dll? */
Type t = asm.GetType("myAssembly.ClassName");
// specify parameters
byte[] a = GetParamA();
int b = GetParamB();
object[] params = new object[2];
params[0] = a;
params[1] = b;
/* 2. invoke method MyMethod() which returns object "CustomType" - how do I check if it exists? */
/* 3. what's the meaning of 4th parameter (t in this case); MSDN says this is "the Object on which to invoke the specified member", but isn't this already accounted for by using t.InvokeMember()? */
CustomType result = t.InvokeMember("MyMethod", BindingFlags.InvokeMethod, null, t, params);
これで十分ですか、それともより良い/より速い/より短い方法がありますか? これらのメソッドが静的ではないことを考えると、コンストラクターはどうですか?単純に無視できますか?
void Methods() を呼び出すとき、単に t.InvokeMember(...) と記述しても問題ありませんか、それとも常に Object obj = t.InvokeMember(...) を実行する必要がありますか?
前もって感謝します。
EDIT 以下の別の回答として、実際の例を提供しました。