Bonjour à tous,
voici mon souci :
j’ai un fichier xml comme ceci :
et j’aurai besoin de convertir dynamiquement le “Green” en System.Drawing.Color.
Suis-je obligé de me taper une méthode testant tous les types possibles genre :
[code]private object convertType(string data, Type type)
{
if (type == typeof(bool))
return bool.Parse(data);
if (type == typeof(System.Drawing.Color))
return Color.FromName(data);
if (type.IsEnum == false)
return System.Enum.Parse(type, data, true);
if (type == typeof(int))
return System.Int32.Parse(data);
return data;
}[/code]
le but est d’appliquer une propriété à un control :
Prends ton reflector, et va voir comment est faite la serialization/deserialization des fichier ressources (resx) dans .Net. Tu peux commencer par resgen.exe
La plupart des classes du Framework ayant une representation textuelle (couleur, geometries, path WPF…) ont un TypeConverter associe, qui permet de faire des conversion string<=>objet. (sous reflector, tu peux voir que Color a un TypeConverter associe via l’attribut TypeConverterAttribute par exemple).
Pour recuperer le typeconverter associe a un type il faut passer par son TypeDescriptor. Ainsi on obtient: