Voglio fare qualcosa del genere:
myYear = record.GetValueOrNull<int?>("myYear"),
Notare il tipo nullable come parametro generico.
Poiché la GetValueOrNull
funzione potrebbe restituire null il mio primo tentativo è stato questo:
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;
}
Ma l'errore che sto ricevendo ora è:
Il tipo "int?" deve essere un tipo di riferimento per usarlo come parametro 'T' nel tipo o metodo generico
Destra! Nullable<int>
è un struct
! Quindi ho provato a cambiare il vincolo di classe in un struct
vincolo (e come effetto collaterale non può più tornare null
):
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : struct
Ora il compito:
myYear = record.GetValueOrNull<int?>("myYear");
Fornisce il seguente errore:
Il tipo "int?" deve essere un tipo di valore non annullabile per usarlo come parametro 'T' nel tipo o metodo generico
È possibile specificare un tipo nullable come parametro generico?
IDataRecord
daDbDataRecord
...