Nullable-Typ als generischer Parameter möglich?
Ich möchte so etwas machen:
myYear = record.GetValueOrNull<int?>("myYear"),
Beachten Sie den Typ nullable als generischen Parameter.
Seit derGetValueOrNull
funktion könnte null zurückgeben mein erster versuch war dieser:
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : class
{
object columnValue = reader[columnName];
if (!(columnValue is DBNull))
{
return (T)columnValue;
}
return null;
}
Aber der Fehler, den ich jetzt erhalte, ist:
Der Typ 'int?' muss ein Referenztyp sein, um ihn als Parameter 'T' im generischen Typ oder in der generischen Methode zu verwenden
Richtig!Nullable<int>
ist einstruct
! Also habe ich versucht, die Klassenbeschränkung auf a zu ändernstruct
Einschränkung (und als Nebeneffekt kann nicht zurückkehrennull
nicht mehr):
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : struct
Nun die Aufgabe:
myYear = record.GetValueOrNull<int?>("myYear");
Gibt den folgenden Fehler aus:
Der Typ 'int?' muss ein nicht nullwertfähiger Werttyp sein, um ihn als Parameter 'T' im generischen Typ oder in der generischen Methode zu verwenden
Ist die Angabe eines nullfähigen Typs als generischer Parameter überhaupt möglich?