Örnekle C# Serileştirme ve Serileştirmeden Çıkarma

Serileştirme ve seri kaldırma kavramı, nesnelerle ilgili verilerin bir uygulamadan diğerine gönderilmesi gerektiğinde kullanılır. Serileştirme, uygulama verilerini bir dosyaya aktarmak için kullanılır. Hedef uygulama, daha sonra kullanım için uygulamadan verileri çıkarmak için seri durumdan çıkarmayı kullanır.

Serileştirme, C# sınıfı nesnelerinin 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ın 2 kimliği ve Öğretici adı vardır.

Serileştirme, Tutorial sınıfının veri özelliklerini bir dosyaya doğrudan yazmak için kullanılabilir. Seri durumdan çıkarma, dosyadaki verileri okumak ve Tutorial nesnesini yeniden oluşturmak için 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.

  1. ID ve Name olmak üzere 2 özelliği olan Tutorial adlı bir sınıf oluşturun.
  2. 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.
  3. Ardından yukarıdaki nesneyi Example.txt adlı bir dosyaya serileştirmek için serileştirmeyi kullanacağız.
  4. Son olarak, nesneyi dosyadan seri durumdan çıkarmak için seri durumdan çıkarmayı kullanacağız ve değerleri Konsolda görüntüleyeceğiz.

Konsol uygulamasının program.cs dosyasına aşağıdaki kodu girin.

Aşama 1) İlk adım, serileştirme için kullanılacak sınıfı eklemektir.

Kod Açıklama:-

  1. Serileştirilmesi gereken sınıfın [Serializable] özniteliğine sahip olması gerekir. Bu, C# dilinde bir anahtar kelimedir. Bu anahtar sözcük 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.
  2. Sonraki, seri hale getirilecek sınıfın tanımıdır. Burada 'Tutorial' adında bir sınıf tanımlıyoruz ve biri 'ID' diğeri 'Name' olmak üzere 2 özellik sağlıyoruz.

Adım 2) Bu adımda öncelikle Tutorial sınıfının nesnesini oluşturacağız ve onu Example.txt adlı dosyaya seri hale getireceğiz.

Kod Açıklama:-

  1. İlk olarak, Tutorial sınıfının bir nesnesini oluşturuyoruz. Daha sonra ID'ye '1' ve name özelliğine '.net' değerini atarız.
  2. Daha sonra nesneyi seri hale getirmek veya ikili bir biçime dönüştürmek için kullanılan biçimlendirici sınıfını kullanırız. Serileştirmede dosyadaki veriler ikili biçimde yapılır. Ardından, bir dosya akışı nesnesi oluşturuyoruz. Dosya akışı nesnesi, örnek.txt dosyasını yazma amacıyla açmak için kullanılır. FileMode.Create ve FileMode.Write anahtar sözcükleri, dosyanın yazma amacıyla açılması gerektiğini özellikle belirtmek için kullanılır.
  3. Son olarak ikili verileri dosyaya aktarmak için Serialize yöntemini kullanıyoruz. Daha sonra yazma işlemi tamamlandığı için akışı kapatıyoruz.

Aşama 3) Son olarak, verilerin dosyada mevcut olduğundan emin olmak için, nesneyi dosyadan seri durumdan çıkarmak için seri durumdan çıkarma 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çıklama:-

  1. Example.txt dosyasını salt okuma modunda açmak için 'stream' nesnesini yaratıyoruz.
  2. Daha sonra, Example.txt dosyasında saklanan nesneyi seri durumdan çıkarmak için kullanılan biçimlendirici sınıfını kullanırız. Döndürülen nesne, objnew nesnesine ayarlanır.
  3. Son olarak, 'ID' ve 'name' özelliklerini kullanarak 'objnew' nesnesinin özelliklerini konsola gösteriyoruz.

Yukarıdaki kod ayarlandığında ve proje Visual Studio kullanılarak çalıştırıldığında, aşağıdaki çıktıyı alacaksınız.

Çıktı:-

Yukarıdaki çıktıdan, dosyadaki değerlerin düzgün bir şekilde seri durumdan çıkarıldığını ve konsolda görüntülendiğini görebilirsiniz.

Özet

Serileştirme, sınıf nesnelerini dosyalara yazmak için kullanılır.

De-Serialization, nesneleri dosyadan kurtarmak için kullanılır.