Поскольку я могу иметь прямой доступ к определенному объекту в сериализованном общем списке, мне нужно знать его положение из де-сериализованного потока.
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>();
Как я могу найти позицию L1 [10] в моем FileStreem для ее использования в методе DeSerialize?
Формат, используемый BinaryFormatter
не доступен для поиска. Вы не можете извлекать под-объекты.
Вероятно, этот вопрос является примером XY-проблемы. Скажите нам, чего вы хотите достичь и зачем вам это нужно. Как уже было сказано, ответа нет.
Возможно, вы можете использовать базу данных. Или используйте протокольные буферы, которые являются более гибкими.