通过继承或其他方式分配const值

时间:2019-02-04 18:09:06

标签: c# inheritance dll const

我有以下课程:

public abstract class ExampleClass
{
    public static readonly float updateRate = 12;
}

我想在.dll中构建它以在其他项目中使用它,并将updateRate保持为常量(或只读静态)。

当我在内部使用ExampleClass的.dll时,我希望能够通过使用.dll的项目以及通过继承抽象类ExampleClass的类来更改常量。

我尝试添加虚拟,但对于静态只读或const无效。我探索了常量方法,但是C#似乎没有实现这些方法。

有没有一种方法可以允许使用ExampleClass.dll的程序员通过继承来更改updateRate的值?

1 个答案:

答案 0 :(得分:1)

常量的含义是不变的。常量一旦声明就不能更改。实际上,在编译时,对常量的每个引用都将替换为其值。

static readonly不是常数-但是它是只读的,因此不能更改。另外,静态成员也不是完全继承的-它们属于在其上声明的类,并且在您意识到自己后就无法覆盖。

但是,您可以做的是从app.config获取值。这样,每个使用此dll的项目都可以在此static readonly字段中拥有自己的值:

public static readonly float updateRate = 
    float.Parse(ConfigurationManager.AppSettings["updateRate"]);