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();




