示例#1
0
        /// <summary>
        /// Sets the state of the object from serialization.
        /// </summary>
        /// <param name="info">Serialization state</param>
        /// <param name="mode">Serialization mode</param>
        protected override void OnSetState(SerializationInfo info, StateMode mode)
        {
            if (mode == StateMode.Serialization)
            {
                _stateStack.Clear();

                if (info.Values.ContainsKey("_stateStack"))
                {
                    //string xml = info.GetValue<string>("_stateStack");
                    byte[] xml = info.GetValue <byte[]>("_stateStack");
                    MobileList <SerializationInfo> list   = (MobileList <SerializationInfo>)MobileFormatter.Deserialize(xml);
                    SerializationInfo[]            layers = list.ToArray();
                    Array.Reverse(layers);
                    foreach (SerializationInfo layer in layers)
                    {
                        _stateStack.Push(layer);
                    }
                }
            }

            _bindingEdit = info.GetValue <bool>("_bindingEdit");
            base.OnSetState(info, mode);
        }