예제 #1
0
        public object Deserialize(System.Xml.XmlReader xmlReader)
        {
            List <Profile> profiles = new List <Profile>();

            xmlReader.ReadStartElement("Profiles");
            while (xmlReader.IsStartElement("Profile"))
            {
                Profile item = new Profile();
                xmlReader.ReadStartElement();
                item.Name    = xmlReader.ReadElementString("Name");
                item.Enabled = bool.Parse(xmlReader.ReadElementString("Enabled"));

                if (xmlReader.IsStartElement("EventTrigger"))
                {
                    xmlReader.ReadStartElement();
                    ISerializer   ser     = SerializerProvider.GetSerializer(typeof(ITrigger));
                    IEventTrigger trigger = (IEventTrigger)ser.Deserialize(xmlReader);
                    item.EventTrigger = trigger;
                    xmlReader.ReadEndElement();
                    SerializerHelper.ReadWhiteSpace(xmlReader);
                }
                item.StateTriggers = new List <IStateTrigger>();
                if (xmlReader.IsStartElement("StateTriggers"))
                {
                    xmlReader.ReadStartElement();
                    SerializerHelper.ReadWhiteSpace(xmlReader);
                    while (xmlReader.IsStartElement())
                    {
                        ISerializer   ser     = SerializerProvider.GetSerializer(typeof(ITrigger));
                        IStateTrigger trigger = (IStateTrigger)ser.Deserialize(xmlReader);
                        item.StateTriggers.Add(trigger);
                    }
                    xmlReader.ReadEndElement();
                    SerializerHelper.ReadWhiteSpace(xmlReader);
                }
                if (xmlReader.IsStartElement("EnterStateAction"))
                {
                    xmlReader.ReadStartElement();
                    SerializerHelper.ReadWhiteSpace(xmlReader);
                    item.ActionToExecute = SerializerHelper.DeserializeAction(xmlReader);
                    xmlReader.ReadEndElement();
                    SerializerHelper.ReadWhiteSpace(xmlReader);
                }
                if (xmlReader.IsStartElement("ExitStateAction"))
                {
                    xmlReader.ReadStartElement();
                    SerializerHelper.ReadWhiteSpace(xmlReader);
                    item.ActionToExecute = SerializerHelper.DeserializeAction(xmlReader);
                    xmlReader.ReadEndElement();
                    SerializerHelper.ReadWhiteSpace(xmlReader);
                }
                xmlReader.ReadEndElement();
                SerializerHelper.ReadWhiteSpace(xmlReader);
                profiles.Add(item);
            }
            xmlReader.ReadEndElement();
            return(profiles);
        }
예제 #2
0
        public void Serialize(System.Xml.XmlWriter xmlWriter, object o)
        {
            IList list = (IList)o;

            foreach (object item in list)
            {
                xmlWriter.WriteStartElement("Item");
                xmlWriter.WriteAttributeString("AssemblyQualifiedName", item.GetType().AssemblyQualifiedName);
                ISerializer serializer = SerializerProvider.GetSerializer(item.GetType());
                serializer.Serialize(xmlWriter, item);
                xmlWriter.WriteEndElement();
            }
        }
예제 #3
0
        public void Serialize(System.Xml.XmlWriter xmlWriter, object o)
        {
            BlockAction ba = (BlockAction)o;

            foreach (var action in ba.ActionList)
            {
                ISerializer actionSerializer = SerializerProvider.GetSerializer(action.GetType());
                xmlWriter.WriteStartElement("Action");
                //xmlWriter.WriteAttributeString("AssemblyQualifiedName", action.GetType().AssemblyQualifiedName);
                xmlWriter.WriteAttributeString("Type", SerializerHelper.GetActionName(action.GetType()));
                actionSerializer.Serialize(xmlWriter, action);
                xmlWriter.WriteEndElement();
            }
        }
예제 #4
0
        public object Deserialize(System.Xml.XmlReader xmlReader)
        {
            List <T> lista = new List <T>();

            while (xmlReader.IsStartElement("Item"))
            {
                Type        type   = Type.GetType(xmlReader.GetAttribute("AssemblyQualifiedName"));
                ISerializer serial = SerializerProvider.GetSerializer(type);
                xmlReader.ReadStartElement("Item");
                lista.Add((T)serial.Deserialize(xmlReader));
                xmlReader.ReadEndElement();
            }
            return(lista);
        }
예제 #5
0
        public override void Serialize(System.Xml.XmlWriter xmlWriter, object o)
        {
            base.Serialize(xmlWriter, o);
            IHasInnerAction action = (IHasInnerAction)o;

            xmlWriter.WriteStartElement("InnerAction");
            xmlWriter.WriteStartElement("Action");
            //xmlWriter.WriteAttributeString("AssemblyQualifiedName", action.InnerAction.GetType().AssemblyQualifiedName);
            xmlWriter.WriteAttributeString("Type", SerializerHelper.GetActionName(action.InnerAction.GetType()));
            ISerializer actionSerializer = SerializerProvider.GetSerializer(action.GetType());

            actionSerializer.Serialize(xmlWriter, action.InnerAction);
            xmlWriter.WriteEndElement();
            xmlWriter.WriteEndElement();
        }
예제 #6
0
        public static IAction DeserializeAction(XmlReader xmlReader)
        {
            if (!xmlReader.IsStartElement("Action"))
            {
                throw new System.Exception("Element Action expected");
            }

            xmlReader.MoveToAttribute("Type");
            Type type = SerializerHelper.ActionTypes[xmlReader.Value];

            if (type == null)
            {
                throw new System.Exception("Tipo não identificado.");
            }

            ISerializer ser    = SerializerProvider.GetSerializer(type);
            IAction     action = (IAction)ser.Deserialize(xmlReader);

            return(action);
        }
예제 #7
0
        public void Serialize(System.Xml.XmlWriter xmlWriter, object o)
        {
            List <Profile> items = (List <Profile>)o;

            xmlWriter.WriteStartElement("Profiles");
            foreach (var profile in items)
            {
                xmlWriter.WriteStartElement("Profile");
                xmlWriter.WriteElementString("Name", profile.Name);
                xmlWriter.WriteElementString("Enabled", profile.Enabled.ToString());
                if (profile.EventTrigger != null)
                {
                    ISerializer eventTriggerSerializer = SerializerProvider.GetSerializer(typeof(IEventTrigger));
                    xmlWriter.WriteStartElement("EventTrigger");
                    xmlWriter.WriteStartElement("Trigger");
                    //xmlWriter.WriteAttributeString("AssemblyQualifiedName", profile.EventTrigger.GetType().AssemblyQualifiedName);
                    xmlWriter.WriteAttributeString("Type", SerializerHelper.GetTriggerName(profile.EventTrigger.GetType()));
                    eventTriggerSerializer.Serialize(xmlWriter, profile.EventTrigger);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                }

                //StateTriggers
                xmlWriter.WriteStartElement("StateTriggers");
                ISerializer stateTriggersSerializer = SerializerProvider.GetSerializer(typeof(IStateTrigger));
                foreach (var stateTrigger in profile.StateTriggers)
                {
                    xmlWriter.WriteStartElement("Trigger");
                    //xmlWriter.WriteAttributeString("AssemblyQualifiedName", stateTrigger.GetType().AssemblyQualifiedName);
                    xmlWriter.WriteAttributeString("Type", SerializerHelper.GetTriggerName(stateTrigger.GetType()));
                    stateTriggersSerializer.Serialize(xmlWriter, stateTrigger);
                    xmlWriter.WriteEndElement();
                }
                xmlWriter.WriteFullEndElement();

                //EnterStateAction
                ISerializer actionToExecuteSerializer = SerializerProvider.GetSerializer(profile.ActionToExecute.GetType());
                xmlWriter.WriteStartElement("EnterStateAction");
                xmlWriter.WriteStartElement("Action");
                //xmlWriter.WriteAttributeString("AssemblyQualifiedName", profile.ActionToExecute.GetType().AssemblyQualifiedName);
                xmlWriter.WriteAttributeString("Type", SerializerHelper.GetActionName(profile.ActionToExecute.GetType()));
                actionToExecuteSerializer.Serialize(xmlWriter, profile.ActionToExecute);
                xmlWriter.WriteEndElement();
                xmlWriter.WriteEndElement();

                //ExitStateAction
                ISerializer exitStateActionSerializer = SerializerProvider.GetSerializer(profile.ActionToExecute.GetType());
                if (profile.ActionOnExitState != null)
                {
                    xmlWriter.WriteStartElement("ExitStateAction");
                    xmlWriter.WriteStartElement("Action");
                    //xmlWriter.WriteAttributeString("AssemblyQualifiedName", profile.ActionOnExitState.GetType().AssemblyQualifiedName);
                    xmlWriter.WriteAttributeString("Type", SerializerHelper.GetActionName(profile.ActionOnExitState.GetType()));
                    exitStateActionSerializer.Serialize(xmlWriter, profile.ActionOnExitState);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                }

                xmlWriter.WriteEndElement();
            }
            xmlWriter.WriteEndElement();
        }