Je veux faire quelque chose comme ça:
myYear = record.GetValueOrNull<int?>("myYear"),
Notez le type nullable comme paramètre générique.
Puisque la GetValueOrNullfonction 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 structcontrainte (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?
IDataRecorddeDbDataRecord..