2009-09-21 5 views
14

J'examine les paramètres d'une méthode C# en utilisant la réflexion. La méthode a quelques paramètres out et pour ceux-ci je récupère les types, qui ont IsByRef = true. Par exemple, si le paramètre est déclaré comme "out string xxx", le paramètre a le type System.String &. Y at-il un moyen de convertir System.String & en System.String? La solution ne devrait bien sûr pas fonctionner seulement pour System.String mais pour n'importe quel type.Convertir le type par référence C# en le type correspondant non par référence

+2

que je change le titre de "référence" à "par référence"? –

+0

Non, pas de problème pour moi. – Achim

Répondre

24

Utilisez Type.GetElementType().

Démo:

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);   
    } 
} 
Questions connexes