我有以下课程:
public abstract class ExampleClass
{
public static readonly float updateRate = 12;
}
我想在.dll中构建它以在其他项目中使用它,并将updateRate保持为常量(或只读静态)。
当我在内部使用ExampleClass的.dll时,我希望能够通过使用.dll的项目以及通过继承抽象类ExampleClass的类来更改常量。
我尝试添加虚拟,但对于静态只读或const无效。我探索了常量方法,但是C#似乎没有实现这些方法。
有没有一种方法可以允许使用ExampleClass.dll的程序员通过继承来更改updateRate的值?
答案 0 :(得分:1)
常量的含义是不变的。常量一旦声明就不能更改。实际上,在编译时,对常量的每个引用都将替换为其值。
static readonly
不是常数-但是它是只读的,因此不能更改。另外,静态成员也不是完全继承的-它们属于在其上声明的类,并且在您意识到自己后就无法覆盖。
但是,您可以做的是从app.config获取值。这样,每个使用此dll的项目都可以在此static readonly
字段中拥有自己的值:
public static readonly float updateRate =
float.Parse(ConfigurationManager.AppSettings["updateRate"]);