System.Windows.Media.Color为颜色名称

Jon*_*ski 1 c# silverlight-3.0

我有以下内容:

Color color = Colors.Red;
color.ToString();
Run Code Online (Sandbox Code Playgroud)

以十六进制表示形式输出.有没有办法输出"红色"?

奖金指向任何人提供适用于不同文化的解决方案(即输出西班牙语的"Rojo").

Jus*_*ner 8

您可能需要使用Reflection手动滚动自己的解决方案.这是我的第一次拍摄:

public static string GetColorName(this System.Windows.Media.Color color)
{
    Type colors = typeof(System.Windows.Media.Colors);
    foreach(var prop in colors.GetProperties())
    {
        if(((System.Windows.Media.Color)prop.GetValue(null, null)) == color)
            return prop.Name;
    }

    throw new Exception("The provided Color is not named.");
}
Run Code Online (Sandbox Code Playgroud)

请记住,这绝不是有效的,但从文档中我可以看到它是唯一的方法.