Elimizde türünü bildiğimiz bir List<object> nesnemiz olabilir, bunun içindeki elemanlarla işlem yapabilmek için object türünden kendi tipimize dönüştürmek isteyebiliriz veya tam tersi durum da olabilir, elimizdeki bir listeyi List<object> türüne dönüştürmek isteyebiliriz.
Generic List sınıfı IEnumerable interface'inden türemiştir, IEnumerable interface'in türeyen sınıflar için Cast extension metodunu kullanarak dönüştürme işlemlerini gerçekleştirebiliriz.
Not: Cast extension metodunu kullanmak için System.Linq namespace'ini eklemeniz gerekmektedir.
Kısa bir açıklama yaptıktan sonra gelelim dönüştürme işlemlerinin nasıl yapıldığına. Aşağıdaki gibi Student türünde bir sınıf yaratalım
public class Student { public int Id { get; set; } public string Name { get; set; } }
Student sınıfımızı yazdığımıza göre iki başlıkta dönüşüm işlemlerinin nasıl yapıldığını inceleyelim.
1- List<object> türüne cast etmek
List<Student> türünde bir nesne yaratalım;
List<Student> studentList = new List<Student>() { new Student() { Id = 1, Name = "Sertaç" }, new Student() { Id = 2, Name = "Deniz" }, new Student() { Id = 3, Name = "Savaş" }, new Student() { Id = 4, Name = "Volkan" } };
Bu Student türündeki listeyi List<object> türüne dönüştürmek için aşağıdaki satırı yazmamız yeterlidir..
List<object> objectList = studentList.Cast<object>().ToList();
2- List<Object> türündeki nesneyi List<Student> türüne cast etmek
Elimizde List<object> türüne cast edilmiş bir nesne varsa ve bunun türünü biliyorsak, yine Cast extension metodunu kullanarak dönüşüm işlemi yapabiliriz.
List<Student> students = objectList.Cast<Student>().ToList();
İncelemek isteyenler için Console uygulamasında yazdığım örneği de paylaşayım.
ConsoleApplication_GenericListCast.rar
Bir başka makalede görüşmek üzere :)