public override ПримитивИлиАдрес АдресВКуче() { if (АдресГруппыВкуче == null) { АдресГруппыВкуче = (ДисковоеХранилище)СобственныйАдресПримитива.АдресВКуче(); } return(АдресГруппыВкуче.ПрочитатьОбъект(НомерВФайле)); }
// собственный адрес для обратного вызова присваивается новым владельцем и сообщается источнику хранения public override ПримитивИлиАдрес Восстановить(Stream поток) // где восстановить { var адресГдеВостановить = СобственныйАдресПримитива.СоздатьСвязь().АдресУдаленнойСвязи; // пусть эта связь доступна Как параметр var адресУдаленный = (АдресУниверсальный)Создать(поток); // это адрес локальный АдресВХрналище, например var текущийадрес = new АдресУниверсальный(); текущийадрес.АдресРегистратора = адресГдеВостановить; текущийадрес.СобственныйАдресПримитива = адресГдеВостановить; текущийадрес.КомандаОбъекту = new Команда("ДайЭлемент", адресУдаленный); АдресПримитива = текущийадрес; // это код для Активности или var канал = АдресПримитива.ТипКанала(); var группа = АдресПримитива.АдресРегистратора;// это адрес группы return(base.Восстановить(поток)); }
public override void СохранисьВ(BinaryWriter писатель) { писатель.Write(Хранилище.кодыТипов[СобственныйАдресПримитива.GetType()]); СобственныйАдресПримитива.СохранисьВ(писатель); писатель.Write(НомерБайтаВФайле); // сохраняется только адрес в файле }