Exemplo n.º 1
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();
        }