J'essaye de convertir un XElement
en null
ou n'importe quel type T
est fourni.Quelqu'un peut-il aider avec cette méthode d'extension générique?
Voici ce que j'ai jusqu'à présent:
public static T? ConvertToNullable<T>(this XElement element) where T : IConvertible
{
if (element.IsNill())
return null;
else
return (T)element;
}
Erreur:
The type
T
must be a non-nullable value type in order to use it as parameterT
in the generic type or methodSystem.Nullable<T>
cela peut être fait ou dois-je écrire une extension séparée pour bool
, byte
, int
, long
, double
, decimal
, etc.
Modifier
je ne l'ai utilisé pour les médicaments génériques du tout. Voir ma réponse ci-dessous.
Merci, mais ne fonctionne pas. Je reçois "Impossible de convertir' XElement' en 'T'". – devuxer
Peut-être "où T: struct, IConvertible" alors? Utilisez les deux clauses? –
@Matt, Merci pour les idées, mais je pense que je l'ai compris maintenant (voir modifier et répondre). Je peux tout aussi bien faire le casting là où j'appelle la méthode d'extension, ce que je trouve plus clair quand même. – devuxer