C# Generic Class
Generic sınıfları kullanarak birçok sınıftan tasarruf edebiliriz. Yani generic sınıf birçok sınıfın yaptığı işi tek başına yapabilir.
C#:
class Program
{
static void Main(string[] args)
{
MyClass<string> t = new MyClass<string>();
t.veriler = "merhaba";
}
}
class MyClass<T>
{
public T veriler { get; set; }
}
Bunun yanı sıra generic classa vereceğimiz parametre türünü kısıtlayabiliriz.
C#:
class Program
{
static void Main(string[] args)
{
MyClass<Ogrenci> t = new MyClass<Ogrenci>();
t.veriler.no = 123;
}
}
class Ogrenci
{
public int no { get; set; }
public string sınıf { get; set; }
}
class MyClass<T> where T : class
{
public T veriler { get; set; }
}
Burada where keywordü ile generic classa parametre olarak sadece class alma şartı koyduk.
Generic class'lara birden fazla parametre vermemizde mümkündür ama vereceğimiz parametrenin ismini belirtmemiz kodun okunabilirliğini artıracaktır.
C#:
class Program
{
static void Main(string[] args)
{
MyClass<Ogrenci, int> t = new MyClass<Ogrenci, int>();
t.veriler.no = 123;
t.not = 88;
}
}
class Ogrenci
{
public int no { get; set; }
public string sınıf { get; set; }
}
class MyClass<TVeriler, TNot> where TVeriler : class where TNot : struct
{
public TVeriler veriler { get; set; }
public TNot not { get; set; }
}
Yukarıda generic class'da 2 adet parametre tanımladık. Biri TVeriler diğeri ise TNot. Fark ettiğiniz gibi parametreleri isimlendirirken başlarına T ve devamdaki ismi büyük harfle başlattık. Main metodunda generic class'tan nesne oluştururken 2 parametreyi de vermek zorundayız aksi taktirde hata alırız. Son olarak yukarıda 2 adet where keywordü kullandık. TVeriler'i class, TNot'u ise struct olarak tanımladık.
Not: Generic class'tan nesne tanımlarken parametre olarak verdiğimiz int değeri struct türü bir yapıdır.