Класс настроек на сайте - PullRequest
       3

Класс настроек на сайте

2 голосов
/ 20 ноября 2010

У меня есть класс Settings.cs, который предоставляет некоторые статические свойства.Эти свойства доступны только для чтения.Этот класс находится в отдельной библиотеке DLL, чем на веб-сайте.

При запуске приложения мне нужно инициализировать класс Settings.cs и заполнить статические свойства значениями.Это должно быть сделано один раз за запуск приложения.

Я подключаюсь к событию Application_Start в веб-приложении.Как я могу получить доступ к этим «частным» статическим свойствам в классе Settings.cs (находящемся в отдельной DLL)?

У меня есть одна опция, которая позволяет классу Settings.cs заполнять себя.Но, опять же, мне нужно сделать это один раз для каждого запуска приложения.

Существует ли шаблон проектирования для такого случая?

Спасибо, уважаемые

Ответы [ 2 ]

1 голос
/ 21 ноября 2010

Вместо того, чтобы программно устанавливать настройки из события Application_Start, вместо этого настройте их декларативно в Web.config.Класс Settings будет затем читать и возвращать эти значения из Web.config.

Это будет выглядеть примерно так ... в Web.config вы можете определить значения для ваших настроек в разделе <appSettings />:

<configuration>
    <appSettings>
        <add key="Setting1" value="..." />
        <add key="Setting2" value="..." />
        ...
        <add key="SettingN" value="..." />
    </appSettings>

    ...
</configuration>

Конечно, вместо Setting1, Setting2 и т. Д. Вы будете использовать более описательные имена для своих настроек.

В вашем Settings классе вашкод будет выглядеть следующим образом:

using System.Configuration;

public class Settings
{
    public int Setting1
    {
        get
        {
            return Convert.ToInt32(ConfigurationManage.AppSettings["Setting1"]);
        }
    }

    public string Setting2
    {
        get
        {
            return ConfigurationManage.AppSettings["Setting1"];
        }
    }

    ...
}

Обратите внимание, что для чтения значения в <appSettings> вы используете ConfigurationManage.AppSettings["settingName"].Это возвращает value указанного параметра приложения в виде строки.Поэтому, если определенные свойства являются целыми числами, логическими значениями или другими типами, вам необходимо преобразовать их соответствующим образом, как я делал с Setting1 выше.

Для получения дополнительной информации об использовании раздела <appSettings> см. AppSettings в Web.config .

Счастливого программирования!

1 голос
/ 20 ноября 2010
public class Settings
{
    const string SettingPath = "Settings";
    public static Settings Instance
    {
        get
        {
            var result = HttpContext.Application[SettingPath] as Settings;
            if (result == null)
            {
                var result = new Settings();
                HttpContext.Current.Application[SettingPath] = result;
            }
            return result;
        }
    }

    private Settings()
    {
        // Load properies here
    }

    // Properties Here
}

А если вам нужно сохранить настройки только для каждой сессии - используйте HttpContext.Current.Session ["SessionSetting"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...