Ошибка после изменения раздела: «Неизвестный атрибут. Имена атрибутов чувствительны к регистру». - PullRequest
0 голосов
/ 13 марта 2020

У меня есть код в первой программе, ссылающийся на конфигурацию второй, где TConfig is ConfigurationSection.

protected TConfig GetCustomConfig<TConfig>(string configFilePath, string sectionName) where TConfig : ConfigurationSection
{            
    var exeFileMap = new ExeConfigurationFileMap();
    exeFileMap.ExeConfigFilename = configFilePath;
    var customConfig = ConfigurationManager.OpenMappedExeConfiguration(exeFileMap,
        ConfigurationUserLevel.None);            
    var returnConfig = customConfig.GetSection(sectionName) as TConfig; 
    return returnConfig;
}

Параметр configFilePath - это путь конфигурации второй программы. У меня есть две версии конфигурации второй программы.

Версия A

<InterfaceSection>
    <paramGroups>
      <paramGroup param1="param1" param2="param2"> 
      </paramGroup>
    </paramGroups>
  </InterfaceSection> 

и версия B

<InterfaceSection>
  <paramGroups>
    <paramGroup param1="param1" param2="param2" param3="param3">        
    </paramGroup>
  </paramGroups>
</InterfaceSection>

В первом Программа Я успешно выполняю метод GetCustomConfig(string versionAconfigFilePath, string interfaceSectionName). Затем я выполняю этот метод для версии конфигурации B: GetCustomConfig(string versionBconfigFilePath, string interfaceSectionName). И получите ошибку: Атрибут «Неизвестный» param3 ». Имена атрибутов чувствительны к регистру.»

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

ОБНОВЛЕНИЕ

У меня есть следующее определение для раздела конфигурации версии B. В разделе конфигурации версии A отсутствует свойство param3 . В этом разница между ними.

public class MyParamGroup : ParamGroup
{
    [ConfigurationProperty("param3", DefaultValue = 60, IsKey = false, IsRequired = false)] 
    public int param3
    {
        get
        {
            return (int)this["param3"];
        }
        set
        {
            this["param3"] = value;
        }
    }
}

[ConfigurationProperty("param1", DefaultValue = 60, IsKey = false, IsRequired = false)] 
public int param1
{
    get
    {
        return (int)this["param1"];
    }
    set
    {
        this["param1"] = value;
    }
}

[ConfigurationProperty("param2", DefaultValue = 60, IsKey = false, IsRequired = false)] 
public int param2
{
    get
    {
        return (int)this["param2"];
    }
    set
    {
        this["param2"] = value;
    }
}

public class ParamGroup : ConfigurationSection
{
    Somethings properties
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...