J'utilise actuellement cette pratique de conversion de la méthode d'extension pour faire des conversions entre types:
public static T To<T>(this IConvertible obj)
{
return (T)Convert.ChangeType(obj, typeof(T));
}
Cependant, il n'est pas comme la conversion de valeurs valides pour Nullable, par exemple, d'échec:
"1".To<int?>();
Évidemment, 1 est facilement converti en une (int?), mais il obtient l'erreur:
Invalid cast from 'System.String' to 'System.Nullable`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.
C'est évidemment un exemple simplifié, en réalité, je suis de l'utiliser pour faire des conversions de types de chaînes comme suit:
packageDb.Quantity = package.package.ElementDeep(Namespace + "PackageQuantity", Namespace + "ActualQuantity", Namespace + "Quantity").ValueOrNull().To<int?>();
Si Convertir.ChangeType n'aime pas les valeurs null, n'importe qui ont des idées géniales?