Почему я не могу получить значение параметров типа out или ref с помощью Type.InvokeMember?

Длинное название, но я хотел, чтобы оно было конкретным. Название действительно вопрос. Несмотря на то, что метод, который вызывает 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));
6
задан Jonathon Reinhart 21 March 2015 в 00:08
поделиться