как передать / передать параметр как отражение?- расширяемость визуальной студии c # - PullRequest
4 голосов
/ 06 сентября 2010

У меня есть выходной параметр. Можно ли передать это как отражение? Можете ли вы дать мне несколько примеров, как это сделать?

1 Ответ

13 голосов
/ 06 сентября 2010

Я не уверен, что это имеет отношение к расширяемости 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.

...