Tuần tự hóa và giải tuần tự hóa trong C# với ví dụ
Tuần tự hóa và giải tuần tự hóa trong C#
Khái niệm Tuần tự hóa và Giải tuần tự hóa đượ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. Tuần tự hóa được sử dụng để xuất dữ liệu ứng dụng thành một tệp. Sau đó, ứng dụng đích sử dụng quá trình khử lưu huỳnh để trích xuất dữ liệu từ ứng dụng để sử dụng tiếp.
Tuần tự hóa là một khái niệm trong đó các đối tượng lớp C# được ghi hoặc tuần tự hóa thành các tệp. Giả sử bạn có một lớp C# tên là Tutorial. Và lớp có 2 thuộc tính là ID và tên Tutorials.
Việc tuần tự hóa 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. Quá trình khử tuần tự đượ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.
Cách tuần tự hóa một đối tượng trong C#
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 Hướng dẫn có 2 thuộc tính là ID và Tên
- Sau đó, chúng ta 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 ta sẽ sử dụng tính nă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 tính năng deserialization để deserialize đối tượng khỏi file và hiển thị các giá trị trong Console.
Nhập mã bên dưới vào tệp chương trình.cs của ứng dụng bảng điều khiển.
Bước 1) Thêm lớp học.
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 phải 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 sắp xếp thứ tự 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 xác định 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à thuộc tính còn lại là “Tên”.
Bước 2) Tạo đối tượng.
Trong bước này, đầu tiên chúng ta sẽ tạo đối tượng của lớp Tutorial và tuần tự hóa nó thành tệp có tên example.txt
Giải thích mã: -
- Đầu tiên chúng ta tạo một đối tượng của lớp Tutorial. Sau đó, chúng tôi gán giá trị “1” cho ID và “.net” cho thuộc tính tên.
- 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 được 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 luồng tệp. Đối tượng luồng tệp được sử dụng để mở tệp example.txt nhằm mục đích ghi. 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 ghi.
- Cuối cùng, chúng ta sử dụng phương thức Serialize để truyền dữ liệu nhị phân vào file. Sau đó chúng tôi đóng luồng vì ghi hoạt động hoàn tất.
Bước 3) Sử dụng quá trình khử lưu huỳnh.
Cuối cùng, để đảm bảo rằng dữ liệu có trong tệp, chúng tôi sử dụng quá trình giải tuần tự hóa để giải tuần tự hóa đố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 ra đối tượng “dòng” để mở file example.txt ở chế độ chỉ đọc.
- Sau đó, chúng tôi sử dụng lớp định dạng được sử dụng để giải tuần tự hóa đối tượng được lưu trữ trong tệp example.txt. Đối tượng được 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 cách sử dụng Visual Studio, bạn sẽ nhận được kết quả đầu ra dưới đây.
Đầu ra: -
Bạn có thể thấy từ kết quả đầu ra ở trên rằng các giá trị từ tệp đã được giải tuần tự hóa đúng cách và hiển thị trong bảng điều khiển.
Tổng kết
Tuần tự hóa được sử dụng để ghi các đối tượng lớp vào các tập tin.
Khử tuần tự hóa được sử dụng để khôi phục các đối tượng từ tệp.