Лучшие практики для создания файлов подключения - PullRequest
4 голосов
/ 18 июля 2011

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

public class ServerConfiguration: ConfigurationSection
{
    [ ConfigurationProperty( FOO, DefaultValue = "", IsRequired = false ) ]
    public string FOO
    {
        get { return (string)this[FOO]; }
        set { this[FOO] = value; }
    }
}

это то, что я делаю для файлов конфигурации, и у меня также есть некоторая иерархия наследования.

Что вы используете для обработки конфигураций и какие рекомендации для этой цели?

1 Ответ

3 голосов
/ 18 июля 2011

Я очень люблю и использую библиотеку конфигурации Microsoft, но стараюсь, чтобы мои приложения не зависели от нее. Обычно это подразумевает, что мой раздел конфигурации реализует интерфейс, поэтому ваш пример будет выглядеть так:

public class ServerConfiguration : ConfigurationSection, IServerConfiguration
{
    [ ConfigurationProperty( FOO, DefaultValue = "", IsRequired = false ) ]
    public string FOO
    {
        get { return (string)this[FOO]; }
        set { this[FOO] = value; }
    }
}

public interface IServerConfiguration
{
    public string FOO { get; } //Unless I am updating the config in code I don't use set on the interface
}

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

Если вы используете раздел конфигурации, вы также зависите от ConfigurationManager. Я скрыл это от своего кода, используя IConfigurationProvider [T], где T будет IServerConfiguration, пример этого можно увидеть в моем блоге в разделе незнания конфигурации.

http://bronumski.blogspot.com/search/label/Configuration

...