我有一个 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";
...
}
这样我就可以从我的核心配置类继承,避免有人意外地创建了我的配置类的实例(它们没有状态,只有固定值)。
有没有更好的方法可以做到这一点?在这种情况下使用"抽象"有问题吗?
抽象类的主体使用静态类:
public static class Config
{
//Core values, which are always needed
public const string Value1 = "abc";
...
}
并将您的变量称为Config.Value1
而不是从类继承。由于 C# 只允许您从一个基类继承,因此强制 use 不必要地继承并不是一个好主意。
此外,静态类永远不能实例化,因此您不必担心人们创建它的实例。
在"SpecialProject1"中,有一个仅与该项目的配置相关的配置类,以便将核心配置和项目配置分开。