2012-05-08 4 views
3

Я пытаюсь использовать конфигурации .NET и понимать пользовательские разделы, элементы и т.д.Canonical пример ConfigurationProperty

Представляется, что реализация этих пользовательских разделов требует явного объявления получения и установки, как правило, в результате чего код наворотов.

Например здесь:

http://msdn.microsoft.com/en-us/library/2tw134k3.aspx

В частности, представляется необходимым для нас явно вернуться и установить вещи в ГЭТ и набор методов.

// Create a "remoteOnly" attribute. 
[ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)] 
public Boolean RemoteOnly 
{ 
    get 
    { 
    return (Boolean)this["remoteOnly"]; 
    } 
    set 
    { 
    this["remoteOnly"] = value; 
    } 
} 

Со следующим

[ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)] 
public Boolean RemoteOnly { get; set } 

не будучи эквивалентно выше.

Действительно ли это так, мы должны быть подробными даже с такими свойствами ванили?

ответ

5

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

Кроме того, если вы беспокоитесь об этом для раздувания кода, вы беспокоитесь о неправильных вещах. Напишите его один раз, никогда не смотрите на него снова. У вас не должно быть такого большого количества кода, который касается настраиваемых параметров конфигурации, которые он раздувает вашу кодовую базу. Возможно, подросток может быть, но не раздуваться. Кроме того, я был бы рад, что вы имеете дело с этим сейчас, а не перед VS2005 - было еще много кода, который вы должны были написать (вам пришлось вручную разбирать разделы XML).

Наконец, если вы до сих пор ненавижу его так много, вы всегда можете использовать «последний раздел конфигурации обработчика я буду когда-нибудь понадобится»: https://sites.google.com/site/craigandera/craigs-stuff/clr-workings/the-last-configuration-section-handler-i-ll-ever-need

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

+0

Существует один недостаток решения Craig: не удается сохранить настройки. Он идеально подходит для чтения только сценариев. – user3285954

+0

Исправьте материал до 2.0. 1.1 Конфигурация была болью в тылу ... – granadaCoder

2

Более сжатая форма { get; set; } расширяется до использования частного члена данных (если я правильно помню). Это просто синтаксический сахар для C# и не имеет ничего общего с системой настройки.

Для ConfigurationProperty вам необходимо получить доступ к указателю на текущем объекте, чтобы хранить/извлекать ваши значения, потому что именно так разработана система. Вы правы, это довольно многословный, но вокруг нет никакого реального пути - вот как нужно сохранять/извлекать значения.

Могу ли я предложить Code Snippets, чтобы упростить (и уменьшить вероятность возникновения ошибок) для создания этих свойств?

Смежные вопросы