2010-09-06 2 views

ответ

13

Я не уверен, что это связано с расширяемостью VS, но это, конечно, можно вызвать метод с out параметром при отражении и выяснить значение параметра out впоследствии:

using System; 
using System.Reflection; 

class Test 
{ 
    static void Main() 
    { 
     MethodInfo method = typeof(int).GetMethod 
      ("TryParse", new Type[] { typeof(string), 
             typeof(int).MakeByRefType() }); 

     // Second value here will be ignored, but make sure it's the right type 
     object[] args = new object[] { "10", 0 }; 

     object result = method.Invoke(null, args); 
     Console.WriteLine("Result: {0}", result); 
     Console.WriteLine("args[1]: {0}", args[1]); 
    } 
} 

Обратите внимание, как вам нужно сохранить ссылку на массив, используемый для передачи аргументов методу, - вот как вы получите значение параметра out после этого. То же самое верно для ref.

+0

Но что, если я не знаю тип второго аргумента? Это мой вопрос здесь: http://stackoverflow.com/questions/33338843/dynamically-declare-a-type-for-a-method-out-parameter – alpinescrambler