/// <summary>
        /// Esegue il task i cui dati sono accessibili dal documento xml di origine specificato
        /// e salva i risultati ottenuti dall'esecuzione del task sul documento xml specificato
        /// come destinazione.
        /// </summary>
        /// <param name="sourceData">documento xml da cui leggere i dati del task da eseguire</param>
        /// <param name="targetData">documento xml su cui scrivere i risultati del task eseguito</param>
        internal static void Execute(XmlDocument sourceData, ref XmlDocument targetData)
        {
            XmlElement root = sourceData.DocumentElement;

            XmlNodeList nodeList = root.SelectNodes("/task/function[@functionName]/@functionName");
            string functionName = (nodeList.Count == 1 ? nodeList.Item(0).Value : string.Empty);

            if (functionName == "MinMax")
            {
                string dataToProcess = root.SelectSingleNode("/task/data").InnerText;

                MinMaxResult result = CalculateMinMax(dataToProcess);
                Serialize(result, ref targetData);
            }
            else if (functionName == "MinMaxIdx")
            {
                string dataToProcess = root.SelectSingleNode("/task/data").InnerText;

                MinMaxIdxResult result = CalculateMinMaxIdx(dataToProcess);
                Serialize(result, ref targetData);
            }
            else
            {
                throw new TaskProcessingException(string.Format("Funzione non trovata: {0}.", functionName));
            }
        }
 /// <summary>
 /// Permette di scrivere il risultato specificato all'interno del documento xml specificato.
 /// </summary>
 /// <param name="result">risultato da scrivere</param>
 /// <param name="document">documento xml di destinazione</param>
 private static void Serialize(MinMaxResult result, ref XmlDocument document)
 {
     XmlSerializer serializer = new XmlSerializer(typeof(MinMaxResult));
     using (XmlWriter writer = document.CreateNavigator().AppendChild())
     {
         serializer.Serialize(writer, result);
     }
 }
 /// <summary>
 /// Permette di scrivere il risultato specificato all'interno del documento xml specificato.
 /// </summary>
 /// <param name="result">risultato da scrivere</param>
 /// <param name="document">documento xml di destinazione</param>
 private static void Serialize(MinMaxResult result, ref XmlDocument document)
 {
     XmlSerializer serializer = new XmlSerializer(typeof(MinMaxResult));
     using (XmlWriter writer = document.CreateNavigator().AppendChild())
     {
         serializer.Serialize(writer, result);
     }
 }