Reflection da Method Çalıştırıken Out ve Ref Parametreleri

Reflection ile out parametreli bir methodu çalıştırmak için ParameterModifier dizisi kullanmamız gerekiyor. (1 method için 1 uzunluklu bir dizi oluşturup. 2 parametre için de dizinin elemanına 2 elemanlı bir diziymiş gibi davranıp true değerini verebiliriz. bi türlü dile getiremedim :P)

true ref ve out için veriliyor, false da normal parametreler için.

Parametrelerin türünü belirtirken Type.GetType metoduna string olarak uzun adını yazıp sonuna da bir & işareti koyuyoruz. Bu işarette ref veya out olduğunu belirtmenizi sağlıyor.

string reflecting = "";
string something = "";
 
Assembly asm = Assembly.LoadFile(
          string.Format(@"{0}\Deneme.dll",Environment.CurrentDirectory));
Object pro = asm.CreateInstance("Deneme.Test");
 
ParameterModifier[] arrPmods = new ParameterModifier[1];
arrPmods[0] = new ParameterModifier(2);
arrPmods[0][0] = true; // out için true
arrPmods[0][1] = true; 
 
System.Type[] arrTypes = new System.Type[3];
//ref ve out parametreleri için & işareti anahtar mevzu
arrTypes.SetValue(Type.GetType("System.String&"), 0);
arrTypes.SetValue(Type.GetType("System.String&"), 1);
 
object[] prms = new object[] { reflecting, something };
 
pro.GetType().GetMethod("Topla", arrTypes, arrPmods).Invoke(pro, prms);
 
Console.WriteLine(string.Format("değer 1:{0}", prms[0]));
Console.WriteLine(string.Format("değer 2:{0}", prms[1]));
 
Console.ReadLine();
  • Facebook
  • Twitter
  • StumbleUpon
  • del.icio.us
  • Digg

Category: Csharp - C# - Comment »


Leave a Reply



Back to top