Je veux faire quelque chose comme ceci :
myYear = record.GetValueOrNull<int?>("myYear"),
Notez le type nullable que le paramètre générique.
Depuis le GetValueOrNull fonction peut retourner null ma première tentative a été ceci :
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 aujourd'hui est
Le type 'int?' doit être un type de référence afin de l'utiliser comme paramètre " T " dans le générique du type ou de la méthode
La droite! Nullable est une structure! J'ai donc essayé de changer la classe de contrainte sur une struct contrainte (et comme un effet secondaire peut pas retourner la valeur null ou plus):
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : struct
Maintenant la cession
myYear = record.GetValueOrNull<int?>("myYear");
Donne l'erreur suivante
Le type 'int?' doit être un non nullable type de valeur afin de l'utiliser comme paramètre " T " dans le générique du type ou de la méthode
Est la spécification d'un type nullable comme un paramètre générique à tous les possibles?