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(); }