ConfigurationProperty и IsRequired = false
От: DMitay Украина  
Дата: 03.08.11 10:56
Оценка:
Подскажите, может быть кто то сталкивался...
В конфиге приложения создана кастомная ConfigurationSection, с несколькими элементами. Соответственно создан класс наследованный от ConfigurationSection.
Некоторые элементы имеют ConfigurationProperty — IsRequired = false, то есть отсутствуют в конфигурационном файле.
Но при сохранении конфига они появляются в фале с дефолтными значениями.
Как этого избежать?
configurationproperty
Re: ConfigurationProperty и IsRequired = false
От: Gremlin2 http://www.fb2library.net/
Дата: 03.08.11 11:20
Оценка:
Здравствуйте, DMitay, Вы писали:

DM>Подскажите, может быть кто то сталкивался...

DM>В конфиге приложения создана кастомная ConfigurationSection, с несколькими элементами. Соответственно создан класс наследованный от ConfigurationSection.
DM>Некоторые элементы имеют ConfigurationProperty — IsRequired = false, то есть отсутствуют в конфигурационном файле.
DM>Но при сохранении конфига они появляются в фале с дефолтными значениями.
DM>Как этого избежать?

В DefaultValue задать значение по умолчанию.
Re[2]: ConfigurationProperty и IsRequired = false
От: DMitay Украина  
Дата: 03.08.11 11:41
Оценка:
Здравствуйте, Gremlin2, Вы писали:

G>В DefaultValue задать значение по умолчанию.


Дефаултные значения стоят, но все равно после сохранения эти элементы появляются в файле.
Re[3]: ConfigurationProperty и IsRequired = false
От: Gremlin2 http://www.fb2library.net/
Дата: 03.08.11 12:00
Оценка:
Здравствуйте, DMitay, Вы писали:

DM>Здравствуйте, Gremlin2, Вы писали:


G>>В DefaultValue задать значение по умолчанию.


DM>Дефаултные значения стоят, но все равно после сохранения эти элементы появляются в файле.


Покажите код, я у себя такого не наблюдаю.
Re[4]: ConfigurationProperty и IsRequired = false
От: DMitay Украина  
Дата: 03.08.11 12:14
Оценка:
Здравствуйте, Gremlin2, Вы писали:

G>Покажите код, я у себя такого не наблюдаю.



// Это sub-node элемента, который в последствии после сохранения записывается в файл
// weekly sub section
[ConfigurationProperty("weekly", IsRequired = false, DefaultValue = null)]
public WeeklyConfigElement Weekly
{
   get
   {
      return ((WeeklyConfigElement)(base["weekly"]));
   }
   set
   {
      base["weekly"] = value;
   }
}


//Это реализация элемента
    public class WeeklyConfigElement : ConfigurationElement
    {
        // DayofWeek attribute
        [ConfigurationProperty("dayofweek", IsRequired = true, DefaultValue = "")]
        public string DayOfWeek
        {
            get
            {
                return ((string)(base["dayofweek"]));
            }
            set
            {
                base["dayofweek"] = value;
            }
        }

        // execution time  sub section
        [ConfigurationProperty("executionTime", IsRequired = true, DefaultValue = null)]
        public ExecutionTimeConfigElement ExecutionTime
        {
            get
            {
                return ((ExecutionTimeConfigElement)(base["executionTime"]));
            }
            set
            {
                base["executionTime"] = value;
            }
        }
    }
Re[5]: ConfigurationProperty и IsRequired = false
От: Gremlin2 http://www.fb2library.net/
Дата: 03.08.11 12:23
Оценка:
Здравствуйте, DMitay, Вы писали:

DM>Здравствуйте, Gremlin2, Вы писали:


G>>Покажите код, я у себя такого не наблюдаю.


  Скрытый текст
DM>
DM>// Это sub-node элемента, который в последствии после сохранения записывается в файл
DM>// weekly sub section
DM>[ConfigurationProperty("weekly", IsRequired = false, DefaultValue = null)]
DM>public WeeklyConfigElement Weekly
DM>{
DM>   get
DM>   {
DM>      return ((WeeklyConfigElement)(base["weekly"]));
DM>   }
DM>   set
DM>   {
DM>      base["weekly"] = value;
DM>   }
DM>}


DM>//Это реализация элемента
DM>    public class WeeklyConfigElement : ConfigurationElement
DM>    {
DM>        // DayofWeek attribute
DM>        [ConfigurationProperty("dayofweek", IsRequired = true, DefaultValue = "")]
DM>        public string DayOfWeek
DM>        {
DM>            get
DM>            {
DM>                return ((string)(base["dayofweek"]));
DM>            }
DM>            set
DM>            {
DM>                base["dayofweek"] = value;
DM>            }
DM>        }

DM>        // execution time  sub section
DM>        [ConfigurationProperty("executionTime", IsRequired = true, DefaultValue = null)]
DM>        public ExecutionTimeConfigElement ExecutionTime
DM>        {
DM>            get
DM>            {
DM>                return ((ExecutionTimeConfigElement)(base["executionTime"]));
DM>            }
DM>            set
DM>            {
DM>                base["executionTime"] = value;
DM>            }
DM>        }
DM>    }
DM>


У вас DayOfWeek появляется в файле? Он у вас где-то инициализируется пустой строкой? Если нет — укажите ему DefaultValue = null.
Re[6]: ConfigurationProperty и IsRequired = false
От: DMitay Украина  
Дата: 03.08.11 12:36
Оценка:
Здравствуйте, Gremlin2, Вы писали:

G>У вас DayOfWeek появляется в файле? Он у вас где-то инициализируется пустой строкой? Если нет — укажите ему DefaultValue = null.


У меня появляется целиком нод:

<weekly dayofweek="">
   <executionTime startTime="00:00" />
</weekly>


Хотя в начальном конф фале его нет.
Re[7]: ConfigurationProperty и IsRequired = false
От: Gremlin2 http://www.fb2library.net/
Дата: 03.08.11 12:51
Оценка:
Здравствуйте, DMitay, Вы писали:

DM>Здравствуйте, Gremlin2, Вы писали:


G>>У вас DayOfWeek появляется в файле? Он у вас где-то инициализируется пустой строкой? Если нет — укажите ему DefaultValue = null.


DM>У меня появляется целиком нод:


DM>
DM><weekly dayofweek="">
DM>   <executionTime startTime="00:00" />
DM></weekly>
DM>


DM>Хотя в начальном конф фале его нет.


А обращений к свойству Weekly у вас в коде нет? И сохраняете вы конфигурация как? Я пользуюсь:

configuration.Save(ConfigurationSaveMode.Modified);


Возможно, при обращении к Weekly у вас создается пустой экземпляр класса WeeklyConfigElement с обязательными полями dayofweek и executionTime. Который и сохраняется в конфиг.
Re[8]: ConfigurationProperty и IsRequired = false
От: DMitay Украина  
Дата: 03.08.11 12:52
Оценка:
Здравствуйте, Gremlin2, Вы писали:

G>А обращений к свойству Weekly у вас в коде нет? И сохраняете вы конфигурация как? Я пользуюсь:


G>
G>configuration.Save(ConfigurationSaveMode.Modified);
G>


G>Возможно, при обращении к Weekly у вас создается пустой экземпляр класса WeeklyConfigElement с обязательными полями dayofweek и executionTime. Который и сохраняется в конфиг.


Да, сохраняю именно так, насчет обращения проверю.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.