2015-05-23 4 views
0

У меня есть раздел конфигурации пользовательских что метание следующее сообщение об ошибке:Пользовательские конфигурации непризнанным атрибут для элемента удалить

Unrecognized attribute 'path'. Note that attribute names are case-sensitive. 

Остальные секции не имеют каких-либо проблем загрузки. Но как только я добавлю элемент <remove> в соответствующую коллекцию, конфигурация не загружается.

Вот код для проблемной секции:

[ConfigurationCollection(typeof(PathElement), CollectionType = ConfigurationElementCollectionType.AddRemoveClearMap)] 
public class PathElementCollection : ConfigurationElementCollection 
{ 
    public PathElementCollection() 
    { 
     // Load the default values... 
     BaseAdd(new PathElement() { Path = "/content/" }); 
    } 

    protected override ConfigurationElement CreateNewElement() 
    { 
     return new PathElement(); 
    } 

    protected override object GetElementKey(ConfigurationElement element) 
    { 
     return ((PathElement)element).Path; 
    } 
} 

public class PathElement : ConfigurationElement 
{ 
    public const string PathPropertyName = "path"; 

    [ConfigurationProperty(PathPropertyName, IsRequired = true)] 
    public string Path 
    { 
     get { return (string)this[PathPropertyName]; } 
     set { this[PathPropertyName] = value; } 
    } 
} 

Как я загружаю раздел в модуле, который использует это:

CustomSection configSection = (CustomSection)ConfigurationManager.GetSection(CustomSection.SectionName); 

Пример конфигурации:

<ignoredPaths> 
    <remove path="/content/" /> 
    <add path="/test/" /> 
</ignoredPaths> 

У кого-нибудь есть идеи относительно того, что я делаю неправильно?

+0

Похоже, это только встречающийся на '' элементов. Обновлен вопрос. – Kyle

ответ

0

Ваши классы должны выглядеть

[XmlRoot("ignoredPaths")] 
    public class IgnoredPaths 
    { 
     PathElementCollection paths {get;set;} 
    } 
    [XmlInclude(typeof(Remove))] 
    [XmlInclude(typeof(Add))] 
    public class PathElementCollection 
    { 
     [XmlAttribute("path")] 
     public string path {get;set;} 
    } 
    [XmlRoot("remove")] 
    public class Remove : PathElementCollection 
    { 
    } 
    [XmlRoot("add")] 
    public class Add : PathElementCollection 
    { 
    }​ 
Смежные вопросы