Пример #1
0
        /// <summary>
        ///   The write xml.
        /// </summary>
        /// <param name="writer"> The writer. </param>
        public void WriteXml(XmlWriter writer)
        {
            // Special case for reference decider.
            // TODO(co): Would be nice to capsule this inside the ReferenceTask class, but the xml node is written
            // before the ReferenceTask object gets the control.
            ReferenceTask referenceTask = this.task as ReferenceTask;

            if (referenceTask != null)
            {
                string typeString = referenceTask.TaskDescription != null
                                        ? referenceTask.TaskDescription.TypeName
                                        : typeof(ReferenceTask).AssemblyQualifiedName;
                writer.WriteAttributeString("type", typeString);
                string elementName = referenceTask.TaskDescription != null
                                         ? referenceTask.TaskDescription.ClassName
                                         : typeof(ReferenceTask).Name;

                XmlSerializer serializer = new XmlSerializer(typeof(ReferenceTask), new XmlRootAttribute(elementName));
                serializer.Serialize(writer, referenceTask);
            }
            else
            {
                XmlAnything <ITask> xmlWrapper = new XmlAnything <ITask>(this.task);
                xmlWrapper.WriteXml(writer);
            }
        }
Пример #2
0
 /// <summary>
 ///   Callback when an unknown task should be read from xml. Uses the task descriptions in this set to wrap the unknown task in a ReferenceTask object.
 /// </summary>
 /// <param name="reader"> Xml reader. </param>
 /// <param name="task"> Task which is read. </param>
 public void OnXmlReadUnknownTask(XmlReader reader, out ITask task)
 {
     try
     {
         task = ReferenceTask.ReadUnknownTask(reader, this);
     }
     catch (XmlException)
     {
         /*
          * CLog.Error(
          *  string.Format("Reading reference task from xml '{0}' failed: '{1}'.", reader.Name, ex.Message));*/
         task = null;
     }
 }