Delegelerin temsil (işaret) ettikleri metodları tek tek yada istediğimiz sırayla çalıştırmak istersek, DynamicInvoke metodunu kullanabiliriz, tabi önce metodları bir Delegate dizisine atmamız gerekiyor, sonrasında dizideki elemanları tek tek çalıştırabiliriz.
delegate void Temsilci();
class Program
{
static void Main(string[] args)
{
//Temsilcimize metodları ekliyoruz
Temsilci temsil = Method1;
temsil += Method2;
temsil += Method3;
temsil += Method4;
//Burada 4 metodu isaret ederken çalıştırırsak 4 metoduda çalıştırıcak fakat biz hepsinin alışmasını istemiyoruz.
Delegate[] methodlar = temsil.GetInvocationList(); // Listeyi alıyoruz
methodlar[2].DynamicInvoke(); //Methodlar dizisinin 3. elemanı çalışıcak
methodlar[1].DynamicInvoke(); //Methodlar dizisinin 2. elemanı çalışıcak
}
static void Method1()
{ Console.WriteLine("Method 1 Çalıştı"); }
static void Method2()
{ Console.WriteLine("Method 2 Çalıştı"); }
static void Method3()
{ Console.WriteLine("Method 3 Çalıştı"); }
static void Method4()
{ Console.WriteLine("Method 4 Çalıştı"); }
}
Hiç yorum yok:
Yorum Gönder