我有一个C#应用程序,包含产品核心和每个客户项目的不同特殊情况。 我需要一种方法来处理和管理全局常量(中心点的所有内容)并提出以下解决方案:
在项目“核心”中:
public abstract class Config
{
//Core values, which are always needed
public const string Value1 = "abc";
...
}
在特定项目“SpecialProject1”(引用Core)中:
public abstract class SpecialConfig : Config
{
//additional extra values for this special case
public const string Value2 = "xyz";
...
}
这样我可以从我的Core Config类继承,并避免有人意外创建我的Config类的实例(它们没有状态,只有固定值)。
有更好的方法吗?在这种情况下使用“抽象”是否有问题?
答案 0 :(得分:2)
抽象类的Instread使用静态类:
public static class Config
{
//Core values, which are always needed
public const string Value1 = "abc";
...
}
并将您的变量称为Config.Value1
,而不是继承自该类。由于C#只允许你从一个基类继承,强制使用不必要地继承是不是一个好主意。
此外,静态类永远不会被实例化,因此您不必担心人们创建它的实例。
在“SpecialProject1”中有一个仅与该项目的配置相关的配置类,因此您可以保持核心配置和项目配置分离。