Sayfayı Yazdır | Pencereyi Kapat

Nesnenin Üyelerini Dinamik Olarak Çağırmak

Nereden Yazdırıldığı: Datakent
Kategori: Diğer bölümler
Forum Adı: C# & ASP.NET
Forum Tanımlaması: C# ve ASP.NET ile ilgili soru / sorun ve paylaşım bölümü
URL: http://forum.datakent.com/forum_posts.asp?TID=2051
Tarih: 27.Nisan.2024 Saat 23:01


Konu: Nesnenin Üyelerini Dinamik Olarak Çağırmak
Mesajı Yazan: turknetyazilim
Konu: Nesnenin Üyelerini Dinamik Olarak Çağırmak
Mesaj Tarihi: 12.Mart.2011 Saat 17:16

Merhaba Arkadaşlar;

Bu makalede .Net uygulamalarında bir Classın üyelerini (Fonksiyon,Prosedür,özellik gibi zımbırtılarını) dinamik olarak nasıl çağırabiliriz onu anlatıcam.

 

Bu yöntem Plugin Tabanlı Programlamada kullanılıyor.Bende bir projede kullandım.Projeyi yazarken Farklı Classlardaki Farklı isimlerdeki methodları tek bir class içersinden çağırmam gerekiyordu.Nasıl çözerim derken aklıma bu yöntem geldi ve kullandım.Bu yöntemi en çok nesnelerin(Class) methodlarına(prosedür veya fonksiyon) veya özelliklerine(Property) dinamik olarak erişmek istediğinizde çok işinize yarayacaktır.

Aşağıda bahsettiğim konuyla ilgili C# ve Visual Basic dilinde basit iki örnek var.Ben örneklerde prosedür ve fonksiyon çağrmayı örnekledim.İsterseniz Nesnenin istediğiniz bir özelliğini okuyup,değiştirebilirsiniz. Tabi dinamik olarak. Smile


C#.Net

namespace DinamikMethodCagirmaTest

{

    using System;

    using System.Windows.Forms;

    public partial class FrmMain : Form

    {

        // Constructor(yapıcı prosedür)

        public FrmMain()

        {

            InitializeComponent();

        }

 

        //Prosedür

        public void deneme1()

        {

            MessageBox.Show("Selam");

        }

 

        //Fonksiyon

        public int deneme2(int x,int y)

        {

            return x + y;

        }

 

        // Dinamik Olarak Çağırıyoruz

        private void btnCagir_Click(object sender, EventArgs e)

        {

            // Bu nesnenin tipini tip değişkenine ata

            Type tip = this.GetType();

 

            // Prosedürü çağırma (1. Yöntem)

            tip.GetMethod("deneme1").Invoke(this, new object[] { });

            // Prosedürü çağırma (2.Yöntem)

            tip.GetMethod("deneme1").Invoke(this, null);

 

            //Bir fonksiyonu çağırma

            MessageBox.Show(tip.GetMethod("deneme2").Invoke(this, new object[] { 5, 4 }).ToString());

        }

 

 

        // Normal Olarak Çağırıyoruz

        private void btnNormalCagir_Click(object sender, EventArgs e)

        {

            this.deneme1();

            MessageBox.Show(deneme2(5, 4).ToString());

        }

    }

}

 



 

 

 

 

 



Visual Basic.Net

Public Class Form1

 

    Public Sub deneme1()

        MsgBox("Selam")

    End Sub

 

    Public Function deneme2(ByVal x As Integer, ByVal y As Integer)

        Return x + y

    End Function

 

    Private Sub btnCagir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCagir.Click

        CallByName(Me, "deneme1", CallType.Method, Nothing)

        MsgBox(CallByName(Me, "deneme2", CallType.Method, 5, 4).ToString())

    End Sub

 

    Private Sub btnNormalCagir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNormalCagir.Click

        Me.deneme1()

        Me.deneme2(4, 5)

    End Sub

End Class


Herkese Çalışmalarında Başarılar Dilerim




Sayfayı Yazdır | Pencereyi Kapat