Serializzare / Deserializzare una data Nullable [c#]

Lavorando con file XML che vengono serializzati e deserializzati si a ha spesso a che fare con campi di tipo date con valori nullable o più semplicemente con valori non presenti per un qualsiasi motivo.

La situazione è gestita come eccezione durante la lettura e può causare problemi.

Usando lo spazio dei nomi System.Xml.Serialization si può incontrare e risolvere il problema durante il processo di serializzazione e deserializzazione.

Ecco il problema, il codice seguente è un datetime nullable, che va bene in .NET

private DateTime? _nullableData;

[XmlAttribute] public DateTime? nullableData 
{ 
     get { 
            return _nullableData; 
      } 

     set { 
           _nullableData= value; 
      } 
}

 

Quando si arriva alla serializzazione / deserializzazione, si riscontra un errore di:

System.InvalidOperationException: Cannot serialize member ‘DOB’ of type System.Nullable`1[System.DateTime]. XmlAttribute/XmlText cannot be used to encode complex types.

Un modo per risolvere il problema è quello di memorizzare la data usando una stringa e poi pre-elaborare la data e quindi memorizzarla nel campo della data nullable, in questo modo:

private DateTime? _nullableData; 

[XmlIgnore] 
public DateTime? nullableData 
{ 
    get { return _nullableData; } 
    set { _nullableData = value; } 
} 

[XmlAttribute(“nullableData”)] 
public string nullableDataString 
{ 
    get { 
        return nullableData.HasValue ? XmlConvert.ToString(nullableData.Value, XmlDateTimeSerializationMode.Unspecified) : string.Empty; 
        } 
    
    set { 
        nullableData = !string.IsNullOrEmpty(value) ? XmlConvert.ToDateTime(value, XmlDateTimeSerializationMode.Unspecified) : (DateTime?) null; 
    } 
}

 

Naming Conventions [C#]

Sviluppo C#

Un argomento spesso sottovalutato nello sviluppo di codice è quello delle “Naming Conventions” o  “Convenzioni di Denominazione” cioè il modo di denominare classi, proprietà, variabili e tutto cioè che può essere presente nel codice di un software. Leggi tutto “Naming Conventions [C#]”

Base64 Encode e Decode di una stringa [c#]

Encode

public static string Base64Encode(string plainText) 
{
  var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
  return System.Convert.ToBase64String(plainTextBytes);
}

Decode

public static string Base64Decode(string base64EncodedData) 
{
  var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
  return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
}

Leggi tutto “Base64 Encode e Decode di una stringa [c#]”

Between Overtourism and Undertourism [2019]

Sito Web della International Conference Between Overtourism and Undertourism: Implications and Crisis Management Strategies” tenutasi a Lecce il 26-29 giugno 2019. Leggi tutto “Between Overtourism and Undertourism [2019]”

Concatenare file PDF da linea di comando con Osx

Concatenare file PDF da linea di comando con Osx

Lavorando su Osx è possibile concatenare due o più file Pdf sfruttando la funzione Anteprima. Se i documenti PDF che si stanno unendo contengono già più pagine, è anche possibile scegliere di copiare solo alcune pagine dal PDF sorgente. Leggi tutto “Concatenare file PDF da linea di comando con Osx”

Problemi tecnici per Binance

Binance Giù per giorni

Se siete utilizzatori di Binance sicuramente avete notato che il noto exchange da alcuni giorni non stava funzionando correttamente. In realtà il sito è giù da diverso tempo.

Viste le brutte esperienze avute in passato in molti, soprattutto chi ha degli account con un certo valore, ha temuto un possibile attacco hacker con conseguente perdita dei depositi degli utenti. Leggi tutto “Problemi tecnici per Binance”

Amazon ed il brevetto sui braccialetti elettronici

Magazzino Amazon

In questi giorni i titoli di blog e giornali sono tutti per la notizia secondo la quale Amazon avrebbe pensato di utilizzare per i suoi dipendenti dei braccialetti elettronici appositamente brevettati che ne traccerebbero gli spostamenti in palese violazione di qualsiasi legge sulla privacy e qualsiasi accordo sui diritti dei lavoratori. I titoloni parlano chiaro Leggi tutto “Amazon ed il brevetto sui braccialetti elettronici”

Definire parametri opzionali per Function e Sub [Vba]

Il linguaggio VBA (Visual Basic for Application) distribuito in applicazioni quali Ms Acces o MS Excel è a tutti gli effetti un linguaggio di programmazione che può essere utilizzato per creare del software utilizzabile egregiamente anche in ambienti di produzione. Leggi tutto “Definire parametri opzionali per Function e Sub [Vba]”

Stefano Centonze [2017]

www.stefanocentonze.it

Sito Web/Blog ufficiale di Stefano Centonze formatore, scrittore, editore, specializzato in Musicoterapia e nello studio della comunicazione non verbale filtrata dal linguaggio del corpo e delle emozioni, fondatore di Network Artedo, rete tra scuole di Arti Terapie in Italia e nel mondo, di  Scuola per SuperEroi – Crescita Personale & Empowerment Managing. Leggi tutto “Stefano Centonze [2017]”

Rimuovere il messaggio “Briefly unavailable for scheduled maintenance. Check back in a minute” da WordPress

La procedura di aggiornamento di WordPress e dei suoi plugin ormai è divenuta una operazione semplice ed indolore.

Può comunque capitare che ci siano degli inconvenienti di qualunque tipo che possono bloccare la procedura e creino nel sistema uno stato inconsistente. Leggi tutto “Rimuovere il messaggio “Briefly unavailable for scheduled maintenance. Check back in a minute” da WordPress”