Background:我在库中有一个字符串const
的标准代码列表(在静态类中),可以在多个项目中共享,可以在内部和外部运行。 (该库具有一个主要功能,不仅用于存储这些字符串)。这些代码是标准化的,不应更改,并且存储这些值的数据库不是有用的解决方案。
这些列表之一是颜色。例如,车辆可能会使用基本的颜色列表,包括红色,黑色,蓝色,灰色等。人的头发颜色也可以是这些标准颜色中的任何一种,但还有其他选择-例如金发-不适用于不是头发的东西。
[使用该库时,我想将StandardCodes.Colors.Black
用于车辆,将StandardCodes.Person.HairColors.Black
用于染发。因为黑色的字符串始终为"BLK - Black"
,所以我不想为每个使用它的类重复多次。当寻找黑色的头发时,我希望以StandardCodes.Person.HairColors.
开头,并且可以选择Black
。如果没有,我(或另一个人)将不得不知道要查找StandardCodes.Colors
,这是不理想的。
这似乎是使用继承的简单情况-HairColors
,并且类似的列表,例如EyeColors
,都将从Colors
派生。
此结构的示例:
public static class StandardCodes
{
public static class Colors
{
public const string Black = "BLK - Black";
public const string Gray = "GRY - Gray";
public const string White = "WHI - White";
}
public static class Person
{
public static class HairColors : Colors
{
public const string Blonde = "BLN - Blond or Strawberry";
public const string Sandy = "SDY - Sandy";
}
}
}
当然,问题是静态类不能从其他类派生。
最好使这些类不是静态的并隐藏构造函数吗?还是有另一种更好的方法来做到这一点?
您可以在层次结构的路由处具有static
类,然后为属性创建一个实例。像这样的东西:
public static class StandardCodes
{
public static Colors Colors = new Colors();
public static class Person
{
public static HairColors HairColors = new HairColors();
}
public class Colors
{
public const string Black = "BLK - Black";
public const string Gray = "GRY - Gray";
public const string White = "WHI - White";
}
public class HairColors : Colors
{
public const string Blonde = "BLN - Blond or Strawberry";
public const string Sandy = "SDY - Sandy";
}
}