问题描述
我正在开发一些颜色,因为我已经创建了一些自定义颜色的属性。
public struct StaticColors
{
//White Shades
public static Color White = ColorTranslator.FromHtml("#ecf0f1");
public static Color White_1 = ColorTranslator.FromHtml("#c5d1d4");
public static Color White_2 = ColorTranslator.FromHtml("#a8babf");
//Red Shades
public static Color Red = ColorTranslator.FromHtml("#db2828");
public static Color Red_1 = ColorTranslator.FromHtml("#a41b1b");
public static Color Red_2 = ColorTranslator.FromHtml("#781414");
}
现在我想要任何颜色的字符串...
var ColorName = StaticColors.White.ToString()
然后我需要在ColorName变量中使用“白色”,以便可以与其他字符串连接,但是我得到的是RGBA值的字符串形式。
有人可以帮助我将Color转换为字符串吗?
解决方法
执行此操作的一种方法是使用nameof
表达式,该表达式返回成员的字符串名称:
var ColorName = nameof(StaticColors.White);
如果希望Name
成为字段的属性,则另一种方法是将Color
类包装在您自己的自定义结构中,并为其提供Name
属性:
public struct StaticColor
{
public string Name { get; }
public Color Color { get; }
public StaticColor(string name,Color color)
{
Name = name;
Color = color;
}
}
然后在您的StaticColors
结构中,您可以拥有这种类型的字段,而不是Color
:
public struct StaticColors
{
//White Shades
public static StaticColor White =
new StaticColor("White",ColorTranslator.FromHtml("#ecf0f1"));
public static StaticColor White_1 =
new StaticColor("White_1",ColorTranslator.FromHtml("#c5d1d4"));
public static StaticColor White_2 =
new StaticColor("White_2",ColorTranslator.FromHtml("#a8babf"));
//Red Shades
public static StaticColor Red =
new StaticColor("Red",ColorTranslator.FromHtml("#db2828"));
public static StaticColor Red_1 =
new StaticColor("Red_1",ColorTranslator.FromHtml("#a41b1b"));
public static StaticColor Red_2 =
new StaticColor("Red_2",ColorTranslator.FromHtml("#781414"));
}
现在您可以访问任何属性的Color
或Name
:
var colorName = StaticColors.White.Name;
var colorColor = StaticColors.White.Color;