Müdavim Girişi

E-Posta
Parola

Ücretsiz Kayıt Ol


Online Müdavimler (0 Kişi)
  • Online Kişi Bulunmadı

Yazar Hakkında
x
İsmail Kocacan
İsmail Kocacan is experienced on many development platforms and continues to learn technologies. Since the age of 16-17, dealing with software technologies. And continuous learning, teaching, research, continues to develop.
Methodları Dinamik Olarak Çağırmak

Merhaba Arkadaslar;

Bu makalede .Net uygulamalarinda bir Classin üyelerini (Fonksiyon,Prosedür,özellik gibi zimbirtilarini) dinamik olarak nasil çagirabiliriz onu anlaticam.
 
Bu yöntem Plugin Tabanli Programlamada kullaniliyor.Bende bir projede kullandim.Projeyi yazarken Farkli Classlardaki Farkli isimlerdeki methodlari tek bir class içersinden çagirmam gerekiyordu.Nasil çözerim derken aklima bu yöntem geldi ve kullandim.Bu yöntemi en çok nesnelerin(Class) methodlarina(prosedür veya fonksiyon) veya özelliklerine(Property) dinamik olarak erismek istediginizde çok isinize yarayacaktir.
Asagida bahsettigim konuyla ilgili C# ve Visual Basic dilinde basit iki örnek var.Ben örneklerde prosedür ve fonksiyon çagrmayi örnekledim.Isterseniz Nesnenin istediginiz bir özelligini okuyup,degistirebilirsiniz. Tabi dinamik olarak.

C#.Net

namespace DinamikMethodCagirmaTest
{
    using System;
    using System.Windows.Forms;
    public partial class FrmMain : Form
    {
        // Constructor(yapici 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 Çagiriyoruz
        private void btnCagir_Click(object sender, EventArgs e)
        {
            // Bu nesnenin tipini tip degiskenine ata
            Type tip = this.GetType();
 
            // Prosedürü çagirma (1. Yöntem)
            tip.GetMethod("deneme1").Invoke(this, new object[] { });
            // Prosedürü çagirma (2.Yöntem)
            tip.GetMethod("deneme1").Invoke(this, null);
 
            //Bir fonksiyonu çagirma
            MessageBox.Show(tip.GetMethod("deneme2").Invoke(this, new object[] { 5, 4 }).ToString());
        }
 
 
        // Normal Olarak Çagiriyoruz
        private void btnNormalCagir_Click(object sender, EventArgs e)
        {
            this.deneme1();
            MessageBox.Show(deneme2(5, 4).ToString());
        }
    }
}
 

C# uygulamasina ait Kaynak Kodlari indirmek için Tiklayiniz
 


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

 Visual Basic.Net Uygulamasina ait Kaynak Kodlari indirmek için tiklayiniz
 

Herkese Çalismalarinda Basarilar Dilerim
Umarim Faydali Olmustur.
Devami Gelecek…
 
Ismail Kocacan (Yazilimci Bozuntusu)
ismailkocacan@gmail.com
 

Kategori : C#.Net & Vb.Net | 12.03.2011 15:36:00  | 980 defa okundu  | 0 Yorum |

Yazara Ait Diğer Makaleler(51) Makaleye Yapılan Yorumlar İlk yorum yazan siz olun
Ara
 
Anket
Hangi VeriTabanı Yönetim Sistemini Kullanıyorsunuz ?