protected override IList <FileDocumentInfo> GetDocumentInfos(DocumentoSanitarioType deserialized) { var documentPath = Path.Combine(ParserInputFolder, deserialized.Componente.Filename); if (!string.IsNullOrEmpty(Parameters.ExtensionWhiteList)) { var fileName = Path.GetFileName(documentPath).ToLowerInvariant(); var whiteList = Parameters.ExtensionWhiteList.ToLowerInvariant().Split('|'); if (!whiteList.Any(e => documentPath.EndsWith(e))) { throw new InvalidOperationException("Estensione non valida per: " + documentPath); } } var document = new FileDocumentInfo(new FileInfo(documentPath)); if (Parameters.SignatureValidationEnabled) { ValidateResultModel validateResult = _dssService.Validate(document.Name, document.Stream); if (!validateResult.IsValid) { throw new SignatureDocumentValidationException(document.FileInfo.FullName, validateResult.ErrorMessages, validateResult.ToRetry); } } var attributes = new List <IDictionary <string, string> > { GetPropertiesDictionary(deserialized.Chiave) }; if (deserialized.Componente != null) { attributes.Add(GetPropertiesDictionary(deserialized.Componente)); } if (deserialized.Dati != null) { attributes.Add(GetPropertiesDictionary(deserialized.Dati)); } if (deserialized.Revisione != null) { attributes.Add(GetPropertiesDictionary(deserialized.Revisione)); } var result = new Dictionary <string, string>(); foreach (var item in attributes) { result = result .Concat(item.Where(a => !result.ContainsKey(a.Key))) .ToDictionary(a => a.Key, a => a.Value); } #if DEBUG result["Numero"] = Guid.NewGuid().ToString("N"); FileLogger.Info(LoggerName, "#if DEBUG: modificato attributo Numero in: " + result["Numero"]); var flattened = result.Select(d => string.Format("{0}: {1}", d.Key, d.Value)); var output = string.Join("\r\n", flattened); #endif document.AddAttributes(result); EvaluateBySignInfo(document); return(new List <FileDocumentInfo> { document }); }