глобальная переменная .net - PullRequest
1 голос
/ 10 апреля 2011

Какой лучший способ настроить глобальную переменную, к которой я могу получить доступ через сайт .net. По сути, я хочу использовать его как тип флага «да / нет», на который я могу ссылаться с любой страницы.

спасибо

Ответы [ 8 ]

2 голосов
/ 10 апреля 2011

Один из способов, который еще не был подробно описан (хотя и упоминался), заключается в использовании значения AppSetting из файла web.config.

Сначала в файле web.config, под <configuration> addследующее:

<appSettings>
    <add key="MyGlobalVar" value="true"/>
</appSettings>

Возможно, раздел <appSettings> уже существует, в таком случае просто добавьте к нему <add ....

Во-вторых, чтобы иметь возможность читать с него, добавьтессылка на System.Configuration сборку в вашем проекте.

Наконец, чтобы прочитать значение с любой страницы, получите такой код:

string myGlobalValue = System.Configuration.ConfigurationManager.AppSettings["MyGlobalVar"];

Затем вы можете изменить значение в файле .configи сохранение его приведет к перезагрузке веб-приложения, так как пул будет переработан.

2 голосов
/ 10 апреля 2011

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

1 голос
/ 10 апреля 2011

Поскольку вы говорите флаг, я бы использовал const, так как он предотвращает изменение bool в любом месте кода:

public static class ApplicationFlags
{
    public const bool MyFlag = false;
}


if (ApplicationFlags.MyFlag)
    Reponse.Write("Ohh, my!");

Вы также можете использовать статические поля.Обратите внимание, что статические поля не являются потокобезопасными.Если вы измените их в одном потоке (один http-запрос), он также будет изменен для всех остальных потоков.

1 голос
/ 10 апреля 2011

Для этого вы можете использовать ключевое слово static .Также я предлагаю вам проверить перечисления в c #

1 голос
/ 10 апреля 2011

это очень простой вопрос. Вы можете создавать и устанавливать общедоступную статическую переменную bool где угодно. пример:

public static class ProgramSettings
    {
        public static bool Flag = false;
    }

но если вы хотите изменить значение флага без компиляции, вы можете использовать настройки конфигурации. (Web.config)

0 голосов
/ 18 марта 2019

Вы можете создать переменную, используя Application Object.

Добавьте следующий код к событию Application_Start в модуле code-behind для файла Global.asax:

Application("abc") = "hi"
0 голосов
/ 10 апреля 2011

да, как сказал TakeMeAsAGuest

сделать класс статическим, чтобы у вас были все необходимые значения конфигурации

public static class ProgramSettings
    {
        private static bool _flag = false;
        public static bool Flag
        {
          get { return _flag; }
          set { _flag = value; }
        }
    }

при запуске приложения задайте нужные вам свойства и прочитайте их из XML-файла или прочитайте из web.config, добавив в web.config

  <appSettings>
    <add key="flag" value="true" />
  </appSettings>

и прочитайте его в application_start как

using System.Configuration;    
ProgramSettings.Flag = ConfigurationManager.AppSettings["flag"]

С уважением

0 голосов
/ 10 апреля 2011

Если вы хотите сохранить их для каждого пользователя, и они могут периодически меняться, потому что пользователь выполнил какое-то поведение, тогда вам лучше использовать переменные сеанса .

VB:

Session("FirstName") = FirstNameTextBox.Text
Session("LastName") = LastNameTextBox.Text

C #:

Session["FirstName"] = FirstNameTextBox.Text;
Session["LastName"] = LastNameTextBox.Text;

Вы можете хранить любые ссылки или типы значений в сеансе. Просто помните, что пока эти значения сохраняются, они занимают ОЗУ на серверах для всех пользователей, для которых установлены эти переменные.

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

Если вы уже знаете значение и оно никогда не изменится, тогда вы можете сделать что-то вроде:

static string ImportantData = @"Some String That Will Never Change";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...