Khái niệm Serialization và deserialization được sử dụng bất cứ khi nào dữ liệu liên quan đến các đối tượng phải được gửi từ ứng dụng này sang ứng dụng khác. Serialization được sử dụng để xuất dữ liệu ứng dụng thành một tệp. Sau đó, ứng dụng đích sẽ sử dụng quá trình deserialization để trích xuất dữ liệu từ ứng dụng để sử dụng tiếp.
Serialization là một khái niệm trong đó các đối tượng lớp C # được viết hoặc tuần tự hóa thành các tệp. Giả sử bạn đã có một lớp C # được gọi là Hướng dẫn. Và lớp có 2 thuộc tính là tên ID và Tutorials.
Serializing có thể được sử dụng để ghi trực tiếp các thuộc tính dữ liệu của lớp Hướng dẫn vào một tệp. Deserialization được sử dụng để đọc dữ liệu từ tệp và xây dựng lại đối tượng Hướng dẫn.
Hãy xem một ví dụ về cách chúng ta có thể đạt được điều này.
Trong ví dụ của chúng tôi, chúng tôi sẽ thực hiện các bước cấp cao bên dưới trong mã
- Tạo một lớp có tên là Hướng dẫn có 2 thuộc tính, đó là ID và Tên
- Sau đó, chúng tôi sẽ tạo một đối tượng từ lớp và gán giá trị "1" cho thuộc tính ID và giá trị ".Net" cho thuộc tính name.
- Sau đó, chúng tôi sẽ sử dụng tuần tự hóa để tuần tự hóa đối tượng trên thành một tệp có tên là Example.txt
- Cuối cùng, chúng ta sẽ sử dụng deserialization để giải không hóa đối tượng khỏi tệp và hiển thị các giá trị trong Bảng điều khiển.
Nhập mã dưới đây vào tệp program.cs của ứng dụng bảng điều khiển.
Bước 1) Bước đầu tiên là thêm lớp sẽ được sử dụng để tuần tự hóa
Giải thích mã: -
- Lớp cần được tuần tự hóa cần có thuộc tính [Serializable]. Đây là một từ khóa trong C #. Từ khóa này sau đó được gắn vào lớp Hướng dẫn. Nếu bạn không đề cập đến thuộc tính này, bạn sẽ gặp lỗi khi cố gắng tuần tự hóa lớp.
- Tiếp theo là định nghĩa của lớp sẽ được tuần tự hóa. Ở đây chúng tôi đang định nghĩa một lớp có tên là "Hướng dẫn" và cung cấp 2 thuộc tính, một là "ID" và một là "Tên".
Bước 2) Trong bước này, đầu tiên chúng ta sẽ tạo đối tượng của lớp Hướng dẫn và tuần tự hóa nó thành tệp có tên là Example.txt
Giải thích mã: -
- Đầu tiên, chúng ta tạo một đối tượng của lớp Hướng dẫn. Sau đó, chúng tôi gán giá trị của "1" cho ID và ".net" cho thuộc tính name.
- Sau đó, chúng tôi sử dụng lớp định dạng được sử dụng để tuần tự hóa hoặc chuyển đổi đối tượng sang định dạng nhị phân. Dữ liệu trong tệp trong tuần tự hóa được thực hiện ở định dạng nhị phân. Tiếp theo, chúng ta tạo một đối tượng dòng tệp. Đối tượng dòng tệp được sử dụng để mở tệp Example.txt cho mục đích viết. Các từ khóa FileMode.Create và FileMode.Write được sử dụng để đề cập cụ thể rằng tệp nên được mở cho mục đích viết.
- Cuối cùng, chúng tôi sử dụng phương pháp Serialize để chuyển dữ liệu nhị phân vào tệp. Sau đó, chúng tôi đóng luồng, vì thao tác ghi đã hoàn tất.
Bước 3) Cuối cùng để đảm bảo rằng dữ liệu hiện diện trong tệp, chúng tôi sử dụng deserialization để giải không khí đối tượng khỏi tệp.
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();}}}
Giải thích mã: -
- Chúng tôi tạo đối tượng "stream" để mở tệp Example.txt ở chế độ chỉ đọc.
- Sau đó, chúng tôi sử dụng lớp định dạng được sử dụng để giải mã hóa đối tượng, được lưu trữ trong tệp Example.txt. Đối tượng trả về được đặt thành đối tượng objnew.
- Cuối cùng, chúng tôi hiển thị các thuộc tính của đối tượng "objnew" trên bảng điều khiển bằng cách sử dụng thuộc tính "ID" và "name".
Khi mã trên được đặt và dự án được chạy bằng Visual Studio, bạn sẽ nhận được kết quả bên dưới.
Đầu ra: -
Bạn có thể thấy từ đầu ra ở trên rằng các giá trị từ tệp đã được giải mã hóa đúng cách và được hiển thị trong bảng điều khiển.
Tóm lược
Serialization được sử dụng để ghi các đối tượng lớp vào tệp.
De-Serialization được sử dụng để khôi phục các đối tượng từ tệp.