26 Haziran 2013 Çarşamba

C# Reflection Kullanımı

Reflection(Yansıma) .NET ortamındaki yapılara çalışma zamanı (Run-time) esnasında erişebilmemizi sağlayan bir yapıdır.reflection sayesinde classlar içerisinde dolaşabilir,içerdikleri yapılar hakkında bilgi alabilir ve değer alış verişinde bulunabilirsiniz.Özellikle çok sayıda field veya metod içereden class'lar ile çalışırken çok işinize yarayacaktır.



reflection işlemini yapabilmek için System.Reflection Kütüphanesini projemize dahil etmemiz gerekiyor.
using System.Reflection;
Basit Bir Class oluşturalım ;


public class KimlikBilgileri
{
private string Ad;

public string Ad1
{
get { return Ad; }
set { Ad = value; }
}
public string Soyad;



public int Topla(int sayi1,int sayi2)
{
return sayi1 + sayi2;
}



}


gördüğünüz gibi class yapımızda 2 adet field,1 adet property ve 1 adet fonksiyon bulunuyor.şimdi reflection kullanarak bu class içerisinde nasıl gezineceğimizi basitçe inceleyelim.

KimlikBilgileri kimlik = new KimlikBilgileri();



FieldInfo[] fields = kimlik.GetType().GetFields();
foreach (var fieldinfo in fields)
{
listBox1.Items.Add("Değişken Adı : " + fieldinfo.Name +" " + fieldinfo.FieldType);

}
yukarıdaki kod bloğu örneğini oluşturduğumuz KimlikBilgileri Class'ının içerisindeki Field'lara erişimi Sağlar. ve dönen değeri Listbox'a Atar.




Aşağıdaki Kodlama Yukarıda örneğini oluşturduğumuz Class içerisindeki Property'ler üzerinde işlem yapmamızı Sağlar.
PropertyInfo[] propinfo = kimlik.GetType().GetProperties();

foreach (var prop in propinfo)
{
MessageBox.Show(prop.Name + "----" + prop.PropertyType);



}


ve son olarakta Class içerisindeki Metodlarımıza şu şekilde Erişebiliriz;
MethodInfo[] metodInfo = kimlik.GetType().GetMethods();


foreach (var metod in metodInfo)
{
//MethodBody body = metod.GetMethodBody();
ParameterInfo[] param=metod.GetParameters();

for (int i = 0; i < param.Length; i++)
{
MessageBox.Show(param[i].Name+Environment.NewLine + param[i].ParameterType);
}

}



şimdilik buraya kadar.Reflection konusu geniş bir konu.ben burada sadece bazı özelliklerini paylaştım.kullandıkça ne kadar çok özelliğinin olduğunu zaten sizde görebileceksiniz.









17 Haziran 2013 Pazartesi

CommandBuilder Nedir?, Nasıl Kullanılır?

CommandBuilder nesnesi Ado.Net mimarisi içerisinde bulunan ve veri tabanı işlemlerimizi kolaylaştırmak için Microsoft Tarafından Geliştirilmiş bir nesnedir.amacı tekil tablolarda otomatik sql sorguları üretmektir.CommandBuilder Çoklu yani Relation İçeren tablolarda Kullanılmaz.Bizim yerimize DataAdapter'a bağlı olduğu tablo bazında sql sorguları üretmek için kullanılır.Çok Fazla detaya girmeden hemen bir örnek verelim ;



MySqlCommandBuilder builder = new MySqlCommandBuilder();
builder.DataAdapter = odaTableAdapter.Adapter;
odaTableAdapter.Fill(oda_ds.oda);
odaTableAdapter.Adapter.DeleteCommand = builder.GetDeleteCommand();
odaTableAdapter.Adapter.InsertCommand = builder.GetInsertCommand();
odaTableAdapter.Adapter.UpdateCommand = builder.GetUpdateCommand();



yukarıdaki kodlamada ilk olarak CommandBuilder nesnesi yaratılıyor.Ardından CommandBuilder nesnesinin hangi dataAdapter nesnesini referans alacağını yani hangi dataAdapter'a bağlanacağını seçiyoruz.
daha sonra Adapter nesnemizin Delete,Update ve Insert Komutlarına CommandBuilder tarafından üretilen Sorgular Atanıyor.Ben bu örnekte DataSet kullandığım için Select Sorgusunu bağlamayı gerek görmedim.Dataset Kullanıyorsanız(ki tavsiye etmiyorum) zaten Fill Metoduyla DataAdapter Select Sorgusunu otomatik olarak generate Ediyor.

6 Haziran 2013 Perşembe

GridControl - Kolon Genişliklerini Ayarlamak

merhaba;

gridcontrol üzerinde çalışırken bütün kolonların; kolon adlarını ve içerdikleri hücre değerlerinin tam olarak görünmesini sağlamak için ilgili formun load kısmına aşağıdaki kodu yapıştırmanız yeterlidir.

for (int i = 0; i < gridView2.Columns.Count; i++) gridView2.Columns[i].BestFit();


Kolay Gelsin.

4 Haziran 2013 Salı

Visual C# - Kayıt Defteri (Registry) İşlemleri

Herkese Merhaba;


bu dersimizde C# Dilini kullanarak registry yani kayıt defteri işlemlerini nasıl yapabileceğimizi inceleyeceğiz.C# ile registry işlemlerini yapabilmemiz için win32.dll'i projemize referans göstermemiz gerekiyor.registry ağacının CurrentUser Kısmında Software altında bir klasör açacak ve içerisinde okuma/yazma işlemlerini gerçekleştireceğiz.


öncelikle projemize Registry işlemlerini yapabilmek için win32.dll'i ekliyoruz.

using Microsoft.Win32;

RegistryKey reg = Registry.CurrentUser.CreateSubKey("Software\\REGTEST", RegistryKeyPermissionCheck.ReadWriteSubTree) 
reg isminde CurrentUser bölümünde bir registry nesnesi yarattık ve bu nesneyi Software\\REGTEST klasörüne eşitledik.yani şuanda reg nesnesi CurrentUser\Software lokasyonundaki REGTEST klasörünün yansıması.

CreateSubKey
- Belirtilen lokasyonda subkey yani alt anahtar oluşturmamıza yarar.eğer belirtilen lokasyonda alt anahtar mevcutsa verilen permission yani izin tipine göre anahtarı okumak veya yazmak için açar.



reg.SetValue(kullaniciadi,"can çevikoğlu", RegistryValueKind.String);
belirtilen anahtara değer atamak için kullanılır.kullaniciadi isimli anahtar oluşturur,can çevikoğlu değerini string türünde kaydeder.SetValue değer atamak için kullanılır.


reg.GetValue(Anahtar)
adı verilen ahtardaki değeri almak için kullanılır.GetValue fonksiyonu parametre olarak aldığı string anahtar adına ait değeri kullanıcıya geri verir.


tüm bunları toplayıp fonksiyon haline getirirsek ortaya şöyle bir yapı çıkacaktır.


Değer atama işlemleri için ;


public static void SetValue(string Anahtar, string Deger)
{
using (RegistryKey reg = Registry.CurrentUser.CreateSubKey("Software\\REGTEST", RegistryKeyPermissionCheck.ReadWriteSubTree))
{
reg.SetValue(Anahtar, Deger, RegistryValueKind.String);
}
}

bu fonksiyon anahtar parametresine aldığı anahtar adında bir anahtar oluşturur ve Değer parametresi ile oluşturduğu bu anahtara değer atar.




public static string GetValue(string Anahtar, string YokiseDeger = "anahtaryok")
{
string qreturn =YokiseDeger;
using (RegistryKey reg = Registry.CurrentUser.CreateSubKey("Software\\BAKISERP", RegistryKeyPermissionCheck.ReadWriteSubTree))
{
qreturn = (string)reg.GetValue(Anahtar);
reg.Close();
}
return qreturn;
}
bu fonksiyon da yine Anahtar Parametresine aldığı parametreyi anahtarlar içerisinde arar,eğer ilgili anahtar kayıtlı ise değerini döndürür,anahtar yok ise "anahtaryok" string'ini döndürür.


win32 dll'i içerisinde birçok fonksiyon bulunmakla beraber temel işlemler için yukarıdaki fonksiyonlar kullanılabilir.