長いタイトルですが、具体的にしたいと思います。タイトルは本当に質問です。InvokeMember
呼び出しているメソッドにはout
パラメーターがあり、そのパラメーターに値を割り当てていますが、その値を取得できません。最初に使用していたコードは次のとおりです。
string parameter = "";
int result = Convert.ToInt32(typeof(Ability).InvokeMember(selectedMove, BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, new object[] { parameter }));
これを変更したため、意図したとおりに機能するようになりましたが、理由はわかりません。
object[] args = new object[1]; //necessary to retrieve ref/out parameter
int result = Convert.ToInt32(typeof(Ability).InvokeMember(selectedMove, BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, args));