public void ReadExternal(IMemento memento, ExternalizeContext context) { _saveTo = memento.ReadSerializable("ExternalizableProxy.SaveTo") as Action <T, IMemento, ExternalizeContext>; _loadFrom = memento.ReadSerializable("ExternalizableProxy.LoadFrom") as Func <IMemento, ExternalizeContext, T>; _real = _loadFrom(memento, context); }
public static Bar LoadBar(IMemento mem, ExternalizeContext context) { var ret = new Bar(); ret.Value = mem.ReadInt("Value"); return(ret); }
// ======================================== // method // ======================================== public void WriteExternal(IMemento memento, ExternalizeContext context) { memento.SetConstructorParamKeys(new[] { "ExternalizableProxy.SaveTo", "ExternalizableProxy.LoadFrom" }); memento.WriteSerializable("ExternalizableProxy.SaveTo", _saveTo); memento.WriteSerializable("ExternalizableProxy.LoadFrom", _loadFrom); _saveTo(_real, memento, context); }
public static void SaveFoo(Foo foo, IMemento mem, ExternalizeContext context) { mem.WriteInt("Value", foo.Value); mem.WriteExternalizable( "Bar", new BarProxy(foo.Bar, SaveBar, LoadBar) ); }
public static Foo LoadFoo(IMemento mem, ExternalizeContext context) { var ret = new Foo(); ret.Value = mem.ReadInt("Value"); var barProxy = mem.ReadExternalizable("Bar") as BarProxy; ret.Bar = barProxy.Real; return(ret); }
public virtual void ReadExternal(IMemento memento, ExternalizeContext context) { _value = memento.ReadInt("Value"); _foo = memento.ReadExternalizable("Foo") as Foo; }
public virtual void WriteExternal(IMemento memento, ExternalizeContext context) { memento.WriteInt("Value", _value); memento.WriteExternalizable("Foo", _foo); }
public virtual void ReadExternal(IMemento memento, ExternalizeContext context) { _value = memento.ReadInt("Value"); _bar = memento.ReadExternalizable("Bar") as Bar; }
public static void SaveBar(Bar bar, IMemento mem, ExternalizeContext context) { mem.WriteInt("Value", bar.Value); }
// --- load --- public object Load(IMemento memento, MementoFilter mementoFilter) { var context = new ExternalizeContext(this, null, mementoFilter); return(context.CreateExternalizable((Memento)memento)); }
// ======================================== // method // ======================================== // --- save --- public IMemento Save(object externalizable, ExternalizableFilter externalizableFilter) { var context = new ExternalizeContext(this, externalizableFilter, null); return(context.CreateMemento(externalizable)); }