2009-09-21 2 views
14

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

+2

возражаете, если я изменить название из «ссылки» на «по ссылке»? –

+0

Нет, не проблема для меня. – Achim

ответ

24

Использование 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);   
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^