精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#中自定義集合的序列化與反序列化實現

admin
2025年1月8日 10:2 本文熱度 228

在C#中,可以通過實現自定義集合的序列化和反序列化來保存和加載集合數據。這通常涉及到實現 ISerializable 接口或使用數據契約(Data Contract)序列化。下面我將展示這兩種方法。

方法一:使用 ISerializable 接口

  1. 定義自定義集合類:首先需要定義一個自定義集合類,比如一個基于 List<T> 的類。

  2. 實現 ISerializable 接口:然后需要實現 ISerializable 接口,包括一個構造函數和 GetObjectData 方法。

  3. 序列化和反序列化:編寫序列化和反序列化的方法。

以下是一個示例:

using System;using System.Collections.Generic;using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;
[Serializable]public class MyCustomCollection<T> : List<T>, ISerializable{    // 序列化構造函數    protected MyCustomCollection(SerializationInfo info, StreamingContext context)    {        // 從序列化信息中恢復數據        var items = (T[])info.GetValue("Items", typeof(T[]));        AddRange(items);    }
    // 實現 ISerializable 接口的 GetObjectData 方法    public void GetObjectData(SerializationInfo info, StreamingContext context)    {        // 將數據添加到序列化信息中        info.AddValue("Items", ToArray());    }
    // 序列化方法    public byte[] Serialize()    {        using (var ms = new MemoryStream())        {            var formatter = new BinaryFormatter();            formatter.Serialize(ms, this);            return ms.ToArray();        }    }
    // 反序列化方法    public static MyCustomCollection<T> Deserialize(byte[] data)    {        using (var ms = new MemoryStream(data))        {            var formatter = new BinaryFormatter();            return (MyCustomCollection<T>)formatter.Deserialize(ms);        }    }}
// 使用示例class Program{    static void Main()    {        var collection = new MyCustomCollection<int> { 1, 2, 3, 4, 5 };
        // 序列化        byte[] serializedData = collection.Serialize();
        // 反序列化        var deserializedCollection = MyCustomCollection<int>.Deserialize(serializedData);
        // 輸出反序列化后的集合        foreach (var item in deserializedCollection)        {            Console.WriteLine(item);        }    }}

方法二:使用 Data Contract 序列化

使用 Data Contract 序列化可以更方便地處理復雜對象和集合,并且不需要實現 ISerializable 接口。

  1. 定義自定義集合類:定義一個自定義集合類。

  2. 應用 Data Contract 屬性:在類和成員上應用 DataContract 和 DataMember 屬性。

  3. 序列化和反序列化:使用 DataContractSerializer 類進行序列化和反序列化。

以下是一個示例:

using System;using System.Collections.Generic;using System.IO;using System.Runtime.Serialization;
[DataContract]public class MyCustomCollection<T> : List<T>{    // 因為 List<T> 已經包含 DataMember 屬性,這里不需要額外定義    // 可以添加額外的自定義屬性并標記為 DataMember}
// 使用示例class Program{    static void Main()    {        var collection = new MyCustomCollection<int> { 1, 2, 3, 4, 5 };
        // 序列化        using (var ms = new MemoryStream())        {            var serializer = new DataContractSerializer(typeof(MyCustomCollection<int>));            serializer.WriteObject(ms, collection);            byte[] serializedData = ms.ToArray();
            // 反序列化            ms.Position = 0; // 重置流位置到開頭            var deserializedCollection = (MyCustomCollection<int>)serializer.ReadObject(ms);
            // 輸出反序列化后的集合            foreach (var item in deserializedCollection)            {                Console.WriteLine(item);            }        }    }}


該文章在 2025/1/8 10:02:55 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 91精品久久人人妻人人爽人人 | 综合欧美一区不卡中文字幕 | 国产精品久久777777 | 无码人妻丝袜在线视频红杏 | 免费综合国产av一区二区三区天堂 | 自拍偷在线精品自拍偷99 | 国产午夜精品理论片a级在线观看欧美一区二区三区高清视 | 亚洲精品国产永久无损音乐 | 亚洲电影日本一区 | 国产网红av在线观看网红主播 | 无码人妻国产精品久久 | 成人做爰WWW免费看视频韩国 | 成全高清在线播放电视剧 | 久久久无码精品一区二区三区 | 国产午夜亚洲精品一区 | 国产精品va一级二级三级 | 中文字幕久久精品一级毛片 | 亚洲乱码伦av | 国产中文在线 | 亚洲欧美日韩国产精品一区二 | 欧美日韩人人天天综合小说 | 无码国内精品久久人妻 | 亚洲欧美午夜精品丝袜一区二区 | 久久精品国产亚洲AV高 | 精品国产三级a∨在线观看 精品国产三级a∨在线 | 日韩乱码人妻无码中文字幕视频 | 丝袜自慰一区二区三区 | 免费无码的av片在线观看 | 少妇性夜夜春夜夜爽a片 | 日韩产品和欧美产品的区别视频 | 国产精品毛片AV在线看 | 亚洲午夜久久久久妓女影院 | 无码中文字幕视频在线播放 | 亚洲天堂一级av免费毛片 | 国产在线精品一区二区三区 | 内射女校花一区二区三区 | 麻豆视频免费在线观看 | 午夜精品一区二区三区av | 一本久久a久久免费精品不 一本久久a久久精品综合 | 亚洲乱码日产精品bd | 巨爆乳肉感一区二区三区 |