ExpandoObject Sınıfı

Eyl 06, 2013

ExpandoObject sınıfı, üye ekleme ve çıkarma işlemlerinin çalışma zamanında ve kolayca yapılmasını sağlar. Burada eklenecek olan üyelerin daha önceden tanımlanmasına gerek yoktur. ExpandoObject dinamik olarak tiplerin oluşturulması, onlara üye tanımlanması (Property (Özellik), Event (Olay) gibi) metotlara parametre olarak gönderilmesi gibi işlemlerin yapılabilmesine olanak sağlamaktadır. ExpandoObject sınıfının kullanılabilmesı için “using System.Dynamic” namespace’i (isim uzayı) kullanılmalıdır. Ayrıca ExpandoObject tipinde bir nesne üretilebilmesi için de “dynamic” anahtar kelimesinin kullanılması gerekmektedir.

Uygulama

Uygulamada "Taban" adlı bir sınıf ve "Turemis" adlı, "Taban" sınıfından türeyen bir başka sınıf bulunmaktadır. "Taban" ve "Turemis" sınıflarında "metot1" adlı birer metot bulunmaktadır. "metot1" içerisinde çalışma anında ExpandoObject tipinde bir nesne yaratılmakta ve bu nesne kullanılarak "sehir" ve "plaka" yazdırılmaktadır. Main (Ana) fonksiyon içerisinde oluşturulan "Taban" sınıf ve "Turemis" sınıf nesneleri ile "metot1" adlı metot çağrılacak ve test edilecektir.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Dynamic;

namespace Deneme
{
    class Taban
    {
        public virtual void metot1()
        {
            dynamic tb1 = new ExpandoObject();
            tb1.sehir = "Ankara";
            tb1.plaka = "06";

                     Console.WriteLine("Bu taban sinifinin metodudur");
            Console.WriteLine("Sehir:" + tb1.sehir);
            Console.WriteLine("Plaka:" + tb1.plaka);
            Console.WriteLine("+++++++++++++++++++++++++++");
        } 
    }

    class Turemis : Taban
    {
        public override void metot1()
        {
            dynamic tr1 = new ExpandoObject();
            tr1.sehir = "Istanbul";
            tr1.plaka = "34";
            Console.WriteLine("Bu turemis sinifin metodudur");
            Console.WriteLine("Sehir:" + tr1.sehir);
            Console.WriteLine("Plaka:" + tr1.plaka);
            Console.WriteLine("+++++++++++++++++++++++++++");
        }
    }

    class test
    {
        public static void Main(string[] args)
        {
            Taban tb2 = new Taban();
            Turemis tr2 = new Turemis();
            tb2.metot1();
            tr2.metot1();

            dynamic SehirSayisi;
            SehirSayisi = new ExpandoObject();
            SehirSayisi.Name = "81";
            SehirSayisiYaz(SehirSayisi);
        }

        private static void SehirSayisiYaz(dynamic sayi)
        {
            Console.WriteLine("Parametreli Metot");
            Console.WriteLine("Sehir Sayisi: {0}", sayi.Name);
            Console.WriteLine("+++++++++++++++++++++++++++");
        } 
    } 

Ekran Çıktısı: