Преобразовать тип ссылки c # в соответствующий тип без ссылки - PullRequest
15 голосов
/ 21 сентября 2009

Я проверяю параметры метода C #, используя отражение. У метода есть несколько выходных параметров, и для них я возвращаю типы, которые имеют IsByRef = true. Например, если параметр объявлен как «out string xxx», он имеет тип System.String &. Есть ли способ конвертировать System.String и обратно в System.String? Конечно, решение должно работать не только для System.String, но и для любого типа.

1 Ответ

25 голосов
/ 21 сентября 2009

Использование Type.GetElementType().

Демо-версия:

using System;
using System.Reflection;

class Test
{
    public void Foo(ref string x)
    {
    }

    static void Main()
    {
        MethodInfo method = typeof(Test).GetMethod("Foo");
        Type stringByRef = method.GetParameters()[0].ParameterType;
        Console.WriteLine(stringByRef);
        Type normalString = stringByRef.GetElementType();
        Console.WriteLine(normalString);        
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...