Je veux faire quelque chose comme ça:
myYear = record.GetValueOrNull<int?>("myYear"),
Notez le type nullable comme paramètre générique.
Puisque la GetValueOrNull
fonction pouvait retourner null, ma première tentative était la suivante:
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;
}
Mais l'erreur que je reçois maintenant est:
Le type 'int?' doit être un type de référence pour pouvoir l'utiliser comme paramètre 'T' dans le type ou la méthode générique
Droite! Nullable<int>
est un struct
! J'ai donc essayé de changer la contrainte de classe en struct
contrainte (et comme effet secondaire, je ne peux plus retourner null
):
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : struct
Maintenant l'affectation:
myYear = record.GetValueOrNull<int?>("myYear");
Donne l'erreur suivante:
Le type 'int?' doit être un type de valeur non nullable afin de l'utiliser comme paramètre 'T' dans le type ou la méthode générique
Est-il possible de spécifier un type nullable comme paramètre générique?
IDataRecord
deDbDataRecord
..