Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在序列化的泛型列表中查找对象位置_C#_Serialization_Filestream - Fatal编程技术网

C# 如何在序列化的泛型列表中查找对象位置

C# 如何在序列化的泛型列表中查找对象位置,c#,serialization,filestream,C#,Serialization,Filestream,因为我可以直接访问序列化泛型列表中的特定对象,所以我需要从反序列化流中知道它的位置 private static void Serialze(object obj, FileStream Stream) { BinaryFormatter bin = new BinaryFormatter(); bin.FilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Low;

因为我可以直接访问序列化泛型列表中的特定对象,所以我需要从反序列化流中知道它的位置

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>();
List L1=新列表();

如何在反序列化方法中找到L1[10]在文件treem中的位置,以便使用它?

无法找到
BinaryFormatter
使用的格式。无法提取子对象

也许,这个问题就是一个例子。告诉我们你想要实现什么,以及你为什么需要这个。正如被问到的,没有答案


也许你可以用数据库来代替。或者,使用更灵活的协议缓冲区。

这根本不是
BinaryFormatter
支持的功能。当然,即使是这样,我仍然强烈建议不要使用
二进制格式化程序
@marcgravel谢谢你,Marc给了你建议。我将对此进行研究。我之所以需要这个,是因为我需要保存一个对象列表,我认为每次我查找对象时,对整个列表进行反序列化都是很繁重的。除了将每个对象分别保存在一个文件中,还有其他方法吗?有很多策略。可以使用对象所在文件中所有偏移的“数组”启动文件。或者,每个对象可以使用一个文件。或者,您会发现性能差异是否重要。也许,您可以反序列化整个文件。