Je veux faire quelque chose comme ceci:Type nullable en tant que paramètre générique possible?
myYear = record.GetValueOrNull<int?>("myYear"),
Notez le type Nullable comme paramètre générique.
Puisque la fonction GetValueOrNull
pourrait revenir nulle 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 est maintenant:
The type 'int?' must be a reference type in order to use it as parameter 'T' in the generic type or method
droit! Nullable<int>
est un struct
! J'ai donc essayé de changer la contrainte de classe à une contrainte struct
(et comme un effet secondaire ne peut pas revenir null
plus):
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : struct
Maintenant la mission:
myYear = record.GetValueOrNull<int?>("myYear");
donne l'erreur suivante:
The type 'int?' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method
Spécifie-t-on un type nullable comme un paramètre générique du tout possible?
Pls pls faire votre signature '' IDataRecord' de DbDataRecord' .. – nawfal