Perşembe, Eylül 20

C# Delegate - DynamicInvoke

      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ı"); }
    }
C# Delegate - DynamicInvoke

Hiç yorum yok: