如何在序列化通用列表中查找对象位置

时间:2014-05-22 11:48:18

标签: c# serialization filestream

因为我可以直接访问序列化通用列表中的特定对象,所以我需要知道来自反序列化流的位置。

private static void Serialze(object obj, FileStream Stream)
    {
        BinaryFormatter bin = new BinaryFormatter();
        bin.FilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Low;
        bin.Serialize(Stream, obj);
    }
private static object DeSerialize(FileStream Stream)
    {
        if (Stream.Position >= Stream.Length) return null;
        BinaryFormatter bin = new BinaryFormatter();
        bin.FilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Low;
        object x = bin.Deserialize(Stream);
        return x;
    }

假设我有一个这样的通用列表:

List<MyClass> L1=new List<MyClass>();

如何在我的FileStreem中找到L1 [10]的位置,以便在DeSerialize方法中使用它?

1 个答案:

答案 0 :(得分:2)

BinaryFormatter使用的格式不可搜索。您无法提取子对象。

这个问题可能是XY-Problem的一个例子。告诉我们您想要实现的目标以及为什么需要这样做。如上所述,没有答案。

也许您可以使用数据库。或者,使用协议缓冲区,它更灵活。