nuevo y mejor respuesta
Por supuesto, ColorConverter es el camino a seguir. Llame al ColorConverter.ConvertFromString y emita el resultado. Es cierto que esto implicará el boxeo. Si desea evitar el boxeo, cree un diccionario para comenzar con los nombres estándar (aún usando ColorConverter) y luego use el diccionario para búsquedas posteriores.
Respuesta original
Se podía bastante ir a buscar fácilmente los nombres y valores de las propiedades de System.Windows.Media.Colors una sola vez en un mapa:
private static readonly Dictionary<string, Color> KnownColors = FetchColors();
public static Color FromName(string name)
{
return KnownColors[name];
}
private static Dictionary<string, Color> FetchColors()
{
// This could be simplified with LINQ.
Dictionary<string, Color> ret = new Dictionary<string, Color>();
foreach (PropertyInfo property in typeof(Colors).GetProperties())
{
ret[property.Name] = (Color) property.GetValue(null);
}
return ret;
}
Es un poco feo, pero es un golpe de una sola vez.
yo sepa, en C# se puede hacer esto utilizando Enum.Parse (typeof (MyEnumType), "Rojo") tal vez eso puede ayudar con una dirección? – scraimer