Esempio n. 1
0
        // ========================================
        // method
        // ========================================
        // === IPersistable ==========
        public override void WriteExternal(IMemento memento, ExternalizeContext context)
        {
            base.WriteExternal(memento, context);


            if (_outgoings != null)
            {
                memento.WriteExternalizables("Outgoings", _outgoings.As <IConnection, object>());
            }
            if (_incomings != null)
            {
                memento.WriteExternalizables("Incomings", _incomings.As <IConnection, object>());
            }
        }
        // ========================================
        // method
        // ========================================
        public virtual void WriteExternal(IMemento memento, ExternalizeContext context)
        {
            memento.WriteBool("IsVisible", _isVisible);
            memento.WriteExternalizable("Layout", _layout);

            if (_layoutConstraints != null)
            {
                var constraints = new Dictionary <IMemento, object>();
                foreach (var pair in _layoutConstraints)
                {
                    var childMem = context.GetMemento("Children", pair.Key);
                    if (childMem != null)
                    {
                        constraints[childMem] = pair.Value;
                    }
                }
                memento.WriteSerializable("LayoutConstraints", constraints);
            }

            var data = new Dictionary <string, object>();

            if (_persistentData != null)
            {
                foreach (var pair in _persistentData)
                {
                    data[pair.Key] = pair.Value;
                }
            }
            memento.WriteSerializable("PersistentData", data);

            if (_structure.HasChildren)
            {
                memento.WriteExternalizables("Children", Children.As <IFigure, object>());
            }
        }
        // === IPersistable ==========
        public void WriteExternal(IMemento memento, ExternalizeContext context)
        {
            var modelSerializer = context.ExtendedData[EditorConsts.ModelSerializerKey] as IModelSerializer;

            if (modelSerializer == null)
            {
                throw new ArgumentException("context.ExtendedData is invalid");
            }

            memento.WriteExternalizable("Figure", Figure);
            memento.WriteSerializable("ModelHint", modelSerializer.Save(Model));
            memento.WriteExternalizables("Children", Children.As <Editor, object>());
        }