Bonjour,

J'utilise cette méthode pour convertir des valeurs lues depuis un fichier Excel vers des attributes c#.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
internal static T GetValue<T>(this string s) {
      TypeConverter converter = TypeDescriptor.GetConverter(typeof(T));
 
      if (converter == null)
            throw new Exception("converter for type '" + typeof(T).FullName + "' not found");
 
      if (string.Equals("null", s) || string.Equals("NULL", s) || string.IsNullOrEmpty(s) || string.IsNullOrWhiteSpace(s))
            return default(T);
 
      if ((typeof(T) == typeof(double?)) || (typeof(T) == typeof(double)))
            s = s.Replace('.', ',');
      else if (typeof(T) == typeof(bool?))
            s = ((s == "no" || s == "No" || s == "NO") ? "false" : ((s == "yes" || s == "Yes" || s == "YES") ? "true" : "null"));
      else if (typeof(T) == typeof(bool))
            s = ((s == "yes" || s == "Yes" || s == "YES") ? "true" : "false");
 
      return (T)converter.ConvertFrom(s);
}
Mon problème est avec les double. En effet, ça ne prend pas en compte la culture, donc ça ne marchera pas sur toutes les configurations de PC. Je vois qu'il y a un override de ConvertFrom qui prend culture comme 3ème argument (où je devrais mettre CultureInfo.InvariantCulture et changer "s = s.Replace('.', ',');" par "s = s.Replace(',', '.');"), mais alors j'ai besoin de saisir ce 1er argument ITypeDescriptorContext, mais je n'ai aucune idée de ce que je devrais mettre là. Est-ce que quelqu'un peut m'aider là-dessus s'il vous plaît ?
Merci