Datakent Ana Sayfa
Anasayfa Anasayfa > Diğer bölümler > C# & ASP.NET
  Aktif Konular Aktif Konular RSS: Nesnenin Üyelerini Dinamik Olarak Çağırmak
  Yardım Yardım  Hızlı Ara   Kayıt Ol Kayıt Ol  Giriş Giriş

Nesnenin Üyelerini Dinamik Olarak Çağırmak

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj Tersinden sırala
turknetyazilim Açılır Menü Göster
Moderator Group
Moderator Group
Simge

Kayıt Tarihi: 18.Ocak.2008
Bulundugu Yer: Balıkesir
Online: Sitede Değil
Gönderilenler: 214
  Alıntı turknetyazilim Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Nesnenin Üyelerini Dinamik Olarak Çağırmak
    Gönderim Zamanı: 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



Düzenleyen turknetyazilim - 12.Mart.2011 Saat 17:22
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Menü Göster



Bu Sayfa 0,305 Saniyede Yüklendi. [power by : WebWiz]