out パラメーターを含まない、何かを返す、または引数を取る単純な静的メソッドがあります。私はこのように実行します:
Assembly assembly = ResourceConfig.GetAssembly("IntegrationServices");
assembly.GetStaticMethod("Current.IntegrationServices.SomeIntegration.SomeMethod").Invoke();
これは正常に実行されているようです...
次に、1 つの出力パラメーター (文字列) を返し、ブール値を返す静的メソッドがあります。これを実行したいのですが、何が間違っているのかわかりません。これは私がこれまでに持っているものです:
var objectArray = new object[1];
(bool)assembly.GetStaticMethod("Current.IntegrationServices.SomeIntegration.ReturningMethod").Invoke(objectArray)
私が理解したことから、objectArray[0] にアクセスして出力値を取得できるはずですが、このコードを実行しようとするとエラーが発生します:
Method Current.IntegrationServices.SomeIntegration.ReturningMethod() cannot be found.
そして、メソッドが実際に存在することを保証します... :)
リフレクションなしでこのメソッドを呼び出すと、次のようになります。
string s;
bool value = Current.IntegrationServices.SomeIntegration.ReturningMethod(out s);
GetStaticMethod と Invoke で実行する方法について何か提案はありますか?
編集: GetStaticMethodWithArgs(this Assembly obj, string methodName, params Type[] list):MethodDelegate というメソッドが見つかりました。これをどのように使用しますか?
編集 2: 引数を指定して静的メソッドを実行できるようになりました。次のようになります。
Assembly assembly = ResourceConfig.GetAssembly("IntegrationServices");
var staticMethodWithArgs = assembly.GetStaticMethodWithArgs("Current.IntegrationServices.SomeIntegration.ReturningMethod", typeof(string), typeof(string));
staticMethodWithArgs.Invoke(InputUsername.Text, InputPassword.Text)
まだパラメーターなしでメソッドを使用できません...提案は評価されています