Ich möchte so etwas machen:
myYear = record.GetValueOrNull<int?>("myYear"),
Beachten Sie den nullbaren Typ als generischen Parameter.
Da die GetValueOrNullFunktion null zurückgeben konnte, war mein erster Versuch folgender:
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 bekomme, ist:
Der Typ 'int?' muss ein Referenztyp sein, um ihn als Parameter 'T' im generischen Typ oder in der generischen Methode verwenden zu können
Richtig! Nullable<int>ist ein struct! Also habe ich versucht, die Klasseneinschränkung in eine structEinschränkung zu ändern (und als Nebeneffekt kann ich nicht nullmehr zurückkehren):
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 nullbarer Werttyp sein, um ihn als Parameter 'T' im generischen Typ oder in der generischen Methode zu verwenden
Ist es überhaupt möglich, einen nullbaren Typ als generischen Parameter anzugeben?
IDataRecordvonDbDataRecord..