Laden...

Reflection IsByRef in .NET 3.5

Erstellt von Desert Fox vor 13 Jahren Letzter Beitrag vor 13 Jahren 974 Views
D
Desert Fox Themenstarter:in
33 Beiträge seit 2010
vor 13 Jahren
Reflection IsByRef in .NET 3.5

Ich bin imo an einem dieser rückständigen NET 3.5 Projekten dran und würde gerne wissen ob es irgentwie möglich ist per Reflection herauszufinden ob ein Parameter ByReference ist. In .NET 4.0 gibt es ja die schöne Property IsByRef, in 3.5 nicht. Kennt jemand ne Lösung?

Hier mal Code den ich mir dazu aus dem MSDN geholt habe (paar ändernungen gemacht das es funktionert, der Macher gehört erschlagen)
Link:


        public static void mymethod(string str1, out string str2, ref string str3)
        {
            str2 = "string";
        }

        public static void Test(string[] args)
        {
            Console.WriteLine("\nReflection.ParameterAttributes");

            // Get the Type and the method.

            Type Mytype = typeof(paramatt);
            MethodBase Mymethodbase = Mytype.GetMethod("mymethod");

            // Display the method.
            Console.Write("\nMymethodbase = " + Mymethodbase);

            // Get the ParameterInfo array.
            ParameterInfo[] Myarray = Mymethodbase.GetParameters();
            foreach (ParameterInfo param in Myarray)
            {
                // Get and display the attributes for the second parameter.
                ParameterAttributes Myparamattributes = param.Attributes;

                Console.WriteLine("\nFor the second parameter:\nMyparamattributes = "
                    + (int)Myparamattributes
                    + ", which is an "
                    + Myparamattributes.ToString());
            }
        }

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

was meinst du denn genau? Das IsByRef Property von Type gibts schon seit .Net 1.1, nicht erst seit 4.

Baka wa shinanakya naoranai.

Mein XING Profil.

T
156 Beiträge seit 2010
vor 13 Jahren

Hallo,
eigentlich müsste das Ganze so funktionieren:


foreach (ParameterInfo param in Mymethodbase.GetParameters())
{
   Console.WriteLine(param.Name + ":");
   if (param.ParameterType.IsByRef)
   {
      Console.WriteLine("ReferenceType");
      if (param.IsOut)
         Console.WriteLine("OUT");
   }
   else
      Console.WriteLine("ValueType");
}

LG, Marko

D
Desert Fox Themenstarter:in
33 Beiträge seit 2010
vor 13 Jahren

Achso - tja ok es war spät, hab nicht ganz überrissen das der Type ja ByRef ist und nicht die ParameterInfo ^^