Присвоение значения const через наследование или другим способом - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть следующий класс:

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

Я хочу встроить его в .dll, чтобы использовать его в других моих проектах и ​​сохранять updateRate как константу (или статическую только для чтения).

Когда я использую .dll с ExampleClass внутри, я хочу иметь возможность изменять константу через проект, который использует .dll и через классы, которые наследуют абстрактный класс ExampleClass.

Я попытался добавить виртуальный, но он недействителен как для статического чтения, так и для const.Я исследовал постоянные методы, но кажется, что C # не реализует их.

Можно ли разрешить программисту, использующему ExampleClass.dll, изменить значение updateRate, возможно, по наследству?

1 Ответ

0 голосов
/ 05 февраля 2019

Значение константы неизменно.Вы не можете изменить константу, как только она объявлена.Фактически, каждая ссылка на константу заменяется ее значением во время компиляции.

static readonly не является константой - однако она доступна только для чтения и поэтому не может быть изменена.Кроме того, статические члены не наследуются точно - они принадлежат к классу, в котором они были объявлены, и не могут быть переопределены, как вы сами это поняли.

Однако вы можете получить значение из приложения.config.Таким образом, каждый проект, использующий эту dll, может иметь собственное значение для этого поля static readonly:

public static readonly float updateRate = 
    float.Parse(ConfigurationManager.AppSettings["updateRate"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...