Nesnelere ilişkin verilerin bir uygulamadan diğerine gönderilmesi gerektiğinde Serileştirme ve seriyi kaldırma kavramı kullanılır. Serileştirme, uygulama verilerini bir dosyaya aktarmak için kullanılır. Hedef uygulama daha sonra verileri daha sonra kullanmak üzere uygulamadan çıkarmak için seriyi kaldırmayı kullanır.
Serileştirme, C # sınıfı nesnelerin dosyalara yazıldığı veya serileştirildiği bir kavramdır. Diyelim ki Tutorial adında bir C # sınıfınız var. Ve sınıf, ID ve Tutorials adı olmak üzere 2 özelliğe sahiptir.
Serileştirme, Tutorial sınıfının veri özelliklerini bir dosyaya doğrudan yazmak için kullanılabilir. Dosyadan veri okumak ve Tutorial nesnesini yeniden oluşturmak için seriyi kaldırma kullanılır.
Bunu nasıl başarabileceğimize dair bir örneğe bakalım.
Örneğimizde, kodda aşağıdaki üst düzey adımları gerçekleştireceğiz
- Kimlik ve Ad olmak üzere 2 özelliğe sahip Öğretici adlı bir sınıf oluşturun
- Daha sonra sınıftan bir nesne oluşturacağız ve ID özelliğine "1" değerini ve name özelliğine ".Net" değerini atayacağız.
- Ardından, yukarıdaki nesneyi Example.txt adlı bir dosyaya serileştirmek için serileştirmeyi kullanacağız.
- Son olarak, nesneyi dosyadan seri durumdan çıkarmak ve konsolda değerleri görüntülemek için seriyi kaldırmayı kullanacağız.
Konsol uygulamasının program.cs dosyasına aşağıdaki kodu girin.
Adım 1) İlk adım serileştirme için kullanılacak sınıfı eklemektir.
Kod Açıklaması: -
- Serileştirilmesi gereken sınıfın [Serializable] özniteliğine sahip olması gerekir. Bu, C # 'da bir anahtar kelimedir. Bu anahtar kelime daha sonra Eğitim sınıfına eklenir. Bu öznitelikten bahsetmezseniz, sınıfı serileştirmeye çalıştığınızda bir hata alırsınız.
- Sırada serileştirilecek sınıfın tanımı var. Burada "Tutorial" adlı bir sınıf tanımlıyoruz ve biri "ID" ve diğeri "Name" olmak üzere 2 özellik sağlıyoruz.
Adım 2) Bu adımda, önce Tutorial sınıfının nesnesini oluşturup, Example.txt adlı dosyaya serileştireceğiz
Kod Açıklaması: -
- İlk olarak, Tutorial sınıfının bir nesnesini oluşturuyoruz. Daha sonra ID'ye "1" değerini ve name özelliğine ".net" değerini atarız.
- Daha sonra nesneyi seri hale getirmek veya ikili biçime dönüştürmek için kullanılan biçimlendirici sınıfını kullanırız. Dosyadaki serileştirme verileri ikili formatta yapılır. Ardından, bir dosya akış nesnesi oluşturuyoruz. Dosya akışı nesnesi, yazma amacıyla Example.txt dosyasını açmak için kullanılır. FileMode.Create ve FileMode.Write anahtar sözcükleri, dosyanın özellikle yazma amacıyla açılması gerektiğini belirtmek için kullanılır.
- Son olarak ikili verileri dosyaya aktarmak için Serialize yöntemini kullanıyoruz. Daha sonra yazma işlemi tamamlandığı için akışı kapatıyoruz.
Adım 3) Son olarak, verilerin dosyada mevcut olduğundan emin olmak için, nesneyi dosyadan seri durumdan çıkarmak için seriyi kaldırmayı kullanırız.
using System;using System.IO;using System.Linq;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Text;using System.Threading.Tasks;namespace DemoApplication{[Serializable]class Tutorial{public int ID;public String Name;static void Main(string[] args){Tutorial obj = new Tutorial();obj.ID = 1;obj.Name = ".Net";IFormatter formatter = new BinaryFormatter();Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write);formatter.Serialize(stream, obj);stream.Close();stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read);Tutorial objnew = (Tutorial)formatter.Deserialize(stream);Console.WriteLine(objnew.ID);Console.WriteLine(objnew.Name);Console.ReadKey();}}}
Kod Açıklaması: -
- Example.txt dosyasını salt okuma modunda açmak için "stream" nesnesini oluşturuyoruz.
- Daha sonra, Example.txt dosyasında saklanan nesnenin serisini kaldırmak için kullanılan formatter sınıfını kullanırız. Döndürülen nesne, yeni nesneye ayarlanır.
- Son olarak, "objnew" nesnesinin özelliklerini "ID" ve "name" özelliklerini kullanarak konsola görüntüleriz.
Yukarıdaki kod ayarlandığında ve proje Visual Studio kullanılarak çalıştırıldığında aşağıdaki çıktıyı alırsınız.
Çıktı:-
Yukarıdaki çıktıdan, dosyadaki değerlerin doğru şekilde serileştirildiğini ve konsolda görüntülendiğini görebilirsiniz.
Özet
Diziselleştirme, sınıf nesnelerini dosyalara yazmak için kullanılır.
Serileştirme, nesneleri dosyadan kurtarmak için kullanılır.