Анализ кода рекомендует использовать const в определении, но как в global.asax? - PullRequest
0 голосов
/ 03 февраля 2011

Код

public class Global : System.Web.HttpApplication
{

    public const string globalServernameSHA = string.Empty;
    public static string globalSqlConnection = string.Empty;

    protected void Application_Start(object sender, EventArgs e)
    {
        globalServernameSHA = ConfigurationManager.AppSettings["varServernameSHA"].ToString();
        globalSqlConnection = ConfigurationManager.ConnectionStrings["varConnectionString"].ToString();
    }

Эти переменные должны быть прочитаны только один раз и определенно должны быть только для чтения. Они должны быть доступны для всего проекта и, следовательно, должны быть публичными.

Есть ли способ, как определить const в коде, как это?

Спасибо

Ответы [ 2 ]

2 голосов
/ 03 февраля 2011

Объявите их только для чтения и переместите инициализацию в конструктор:

public class Global : System.Web.HttpApplication
{

    public readonly string globalServernameSHA;
    public readonly string globalSqlConnection;

    public Global()
    {
        globalServernameSHA = ConfigurationManager.AppSettings["varServernameSHA"].ToString();
        globalSqlConnection = ConfigurationManager.ConnectionStrings["varConnectionString"].ToString();
    }
0 голосов
/ 03 февраля 2011

Они не могут быть объявлены как const, так как значение извлекается из файла настроек.const значения всегда жестко запрограммированы в самой исполняемой программе.

readonly - ваш лучший выбор в данных обстоятельствах, что означает, что переменные могут быть установлены только в конструкторе (экземпляре или статическом конструкторе,в зависимости от того, как вы определяете переменные), или в методе, вызываемом конструктором, когда переменная передается как ref.

...