public void Переписать(АМОбъект примитив, int адрес) // существует опасность перекрытия данных { Писатель.BaseStream.Position = адрес; примитив.СохранисьВ(Писатель.BaseStream); Писатель.BaseStream.Position = адресСчетчика; СчетчикОбъетов++; Писатель.Write(СчетчикОбъетов); }
// можно создать разреженный объект поток и распихать его в дыры public MemoryStream ЗаписатьВВиртуальныйПоток(АМОбъект примитив) // { var виртПоток = new MemoryStream(); var писатель = new BinaryWriter(виртПоток); var кодТипа = Хранилище.кодыТипов[примитив.GetType()]; писатель.Write(кодТипа); примитив.СохранисьВ(Писатель); return(виртПоток); }
public void ДобавитьИСохранить(АМОбъект примитивИлиАдрес) // в конец { Память.Add(примитивИлиАдрес); Писатель.Seek(0, SeekOrigin.End); var кодТипа = кодыТипов[примитивИлиАдрес.GetType()]; Писатель.Write(кодТипа); примитивИлиАдрес.СохранисьВ(Писатель); длинаФайла = (int)Писатель.BaseStream.Position; // = + длинаАдреса + длина списка }
public void ПередайСообщениеВПоток(АМОбъект сообщение) { сообщение.СохранисьВ(поток); }