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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。