您好,登錄后才能下訂單哦!
C# 元數據(Metadata)是指程序中類型、方法、屬性等信息的描述
C# 提供了多種序列化機制,如 BinaryFormatter、XmlSerializer、DataContractSerializer 和 JsonSerializer 等。這些序列化器可以將對象序列化為不同的格式,如二進制、XML、JSON 等。
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
var obj = new MyClass();
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream("data.bin", FileMode.Create, FileAccess.Write))
{
formatter.Serialize(stream, obj);
}
using System.IO;
using System.Xml.Serialization;
var obj = new MyClass();
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
using (FileStream stream = new FileStream("data.xml", FileMode.Create, FileAccess.Write))
{
serializer.Serialize(stream, obj);
}
using System.IO;
using System.Runtime.Serialization;
var obj = new MyClass();
DataContractSerializer serializer = new DataContractSerializer(typeof(MyClass));
using (FileStream stream = new FileStream("data.xml", FileMode.Create, FileAccess.Write))
{
serializer.WriteObject(stream, obj);
}
using System.IO;
using System.Text.Json;
var obj = new MyClass();
string jsonString = JsonSerializer.Serialize(obj);
File.WriteAllText("data.json", jsonString);
如果需要更高級的序列化功能,可以實現 ISerializable 接口來自定義序列化過程。這樣可以控制哪些字段被序列化,以及如何序列化這些字段。
[Serializable]
public class MyClass : ISerializable
{
public int MyProperty { get; set; }
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("MyProperty", MyProperty);
}
protected MyClass(SerializationInfo info, StreamingContext context)
{
MyProperty = info.GetInt32("MyProperty");
}
}
C# 提供了多種序列化機制,可以根據實際需求選擇合適的序列化器。同時,可以通過實現 ISerializable 接口來自定義序列化過程,以滿足特定需求。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。