È un modo sicuro ed efficace per gestire la lettura di valori null in un DB usando Generics?

StackOverflow https://stackoverflow.com/questions/1438888

  •  10-07-2019
  •  | 
  •  

Domanda

Ho giocato con i generici e speravo di ricevere feedback o suggerimenti su una funzione che ho creato per aiutare a gestire la lettura di valori null dal DB. La mia preoccupazione principale è nell'istruzione if. C'è un modo migliore per scoprire se T è un ect stringa. Grazie.

public static T CheckNull<T>(object value)
    {
        if ((value != null) && value.Equals(DBNull.Value))
        {
            if (object.ReferenceEquals(typeof(T), typeof(String)))
                value = string.Empty;
            else if (object.ReferenceEquals(typeof(T), typeof(Boolean)))
                value = false;
            else
                value = null;
        }
        return (T)value;
    }
È stato utile?

Soluzione

Indipendentemente dal tipo di T , puoi tornare a default (T) che fornirà il valore predefinito per il tipo specificato ( string.Empty , 0 , false , null , ecc ...):

value = default(T);

Modifica: default (stringa) , tuttavia, restituisce null .

Altri suggerimenti

Devi anche includere altri tipi di dati primitivi.

value = default(T);

Questo restituisce null se si tratta di un tipo di riferimento, altrimenti 0, falso o qualunque sia un valore predefinito appropriato del tipo dato T.

Nota: l'impostazione predefinita (stringa) è null , non string.Empty. Se vuoi che sia String.Empty , devi implementarlo come un'eccezione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top