Ist dies eine sichere und effiziente Art und Weise das Lesen der Nullwerte in einem DB mit Generics zu behandeln?

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

  •  10-07-2019
  •  | 
  •  

Frage

Ich habe mit Generika zu spielen und habe gehofft, dass ich ein Feedback oder Vorschläge zu einer Funktion erhalten könnte ich NULL-Werte aus der DB Lese helfen erstellt zu behandeln. Mein Hauptanliegen ist es in der if-Anweisung. Gibt es einen besseren Weg, um herauszufinden, ob T einen String ect ist.? Danke.

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;
    }
War es hilfreich?

Lösung

Unabhängig von T der Typ, können Sie zurück zu default(T) fallen, die den Standardwert für den gegebenen Typ liefern wird ( string.Empty , 0, false, null, etc ...):

value = default(T);

Edit: default(string) hat jedoch zurückkehren null

.

Andere Tipps

Sie müssen auch andere primitive Datentypen abzudecken.

value = default(T);

Diese Rückkehr null, wenn es dich um einen Referenztyp ist, sonst 0, falsch oder was auch immer ist ein geeigneter Standardwert der angegebenen Typ T.

Hinweis: default (string) ist null, nicht string.Empty. Wenn Sie es sein String.Empty möchten, müssen Sie dies als Ausnahme implementieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top