2013-04-25 4 views
0

Так что я совершенно не привык к использованию файла app-config, я пытаюсь создать собственный обработчик конфигурации, чтобы я мог читать несколько значений из одного и того же ключа, я следил за документацией на веб-сайте Microsoft, но ive сталкиваются с проблемой.Проблемы с обработчиком раздела настраиваемой конфигурации

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

«Непризнанный атрибут 'тип данных' Обратите внимание, что имена атрибутов чувствительны к регистру (C: \ Users \ stephen.carmody \ Desktop \ FlatFileFactory - Copy.. \ FlatFileFactory \ Bin \ Debug \ FlatFileFactory.vshost.exe.Config строка 21)»

Это только кажется, признать, первые два значения в элементе, то третий„тип данных“бросает ошибку

Вот является посмотрите мой конфигурационный файл

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <!-- Configuration section-handler declaration area. --> 
<configSections> 
    <sectionGroup name="propertyValuesGroup"> 
    <section 
    name="propertyValues" 
    type="FlatFileTestCaseAutomater.CustomConfigurationSectionHandler,FlatFileFactory" 
    allowLocation="true" 
    allowDefinition="Everywhere" 
    /> 
</sectionGroup> 
<!-- Other <section> and <sectionGroup> elements. --> 
</configSections> 

<!-- Configuration section settings area. --> 


<propertyValuesGroup> 
<propertyValues> 
    <cHeaderProperty name="txnNo" nullable="yes" datatype="int" maxlength="" /> 
</propertyValues> 
</propertyValuesGroup> 

</configuration> 

Вот посмотрите на мой пользовательский класс обработчика:

namespace FlatFileTestCaseAutomater 
{ 
    class CustomConfigurationSectionHandler : ConfigurationSection 
    { 
     [ConfigurationProperty("cHeaderProperty")] 
     public CHeaderPropertyElement Property 
    { 
     get 
     { 
      return (CHeaderPropertyElement)this["cHeaderProperty"]; 
     } 
     set 
     { this["cHeaderProperty"] = value; } 
    } 
} 


public class ClaimHeaderElement : ConfigurationElement 
{ 
    [ConfigurationProperty("name", DefaultValue = "", IsRequired = true)] 
    [StringValidator(InvalidCharacters = "[email protected]#$%^&*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)] 
    public String Name 
    { 
     get 
     { 
      return (String)this["name"]; 
     } 
     set 
     { 
      this["name"] = value; 
     } 
    } 

    [ConfigurationProperty("dataType", DefaultValue = "", IsRequired = true)] 
    [StringValidator(InvalidCharacters = "[email protected]#$%^&*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)] 
    public String DataType 
    { 
     get 
     { 
      return (String)this["dataType"]; 
     } 
     set 
     { 
      this["dataType"] = value; 
     } 
    } 

    [ConfigurationProperty("maxLength", DefaultValue = int.MaxValue, IsRequired = false)] 
    // [IntegerValidator(ExcludeRange = false, MaxValue = 24, MinValue = 0)] 
    public int MaxLength 
    { 
     get 
     { return (int)this["maxLength"]; } 
     set 
     { this["maxLength"] = value; } 
    } 

} 

} 

Здесь является фрагмент кода, где разрыв происходит во время отладки:

FlatFileTestCaseAutomater.CustomConfigurationSectionHandler config = 
    (FlatFileTestCaseAutomater.CustomConfigurationSectionHandler)System.Configuration.ConfigurationManager.GetSection(
    "propertyValuesGroup/propertyValues"); 

Я знаю подобную нить была размещена раньше, но Я был здесь уже несколько часов без везения

+0

Я могу ошибаться, но ваши имена в конфигурации не кажется, того же «дела», они все в нижнем регистре (тип данных и максимальная длина), опечатка при вставке здесь? – NSGaga

+0

Тот же случай, что и что? Методы? Я попытался сделать их одинаковыми, тот же результат – Steve2056726

ответ

0

Возможно, я ошибаюсь, но ваши имена в конфигурации не кажутся одинаковыми «case», они все в нижнем регистре (тип данных и максимальная длина), опечатка, когда здесь?

Атрибуты действительно чувствительны к регистру - и оно должно быть (на основе кода)

<cHeaderProperty name="txnNo" nullable="yes" dataType="int" maxLength="" /> 
+0

Это была ошибка, изначально у меня было сопоставление, но не работает. В соответствии с этой [link] http://msdn.microsoft.com/en-us/library/2tw134k3.aspx [/ link] я должен иметь возможность вызывать такие значения: config.Property.MaxLenth, однако maxLength не доступен когда я набираю config.Property. – Steve2056726