У меня есть проект C #, который читает из автономного файла конфигурации с именем test.config
. Это отдельный файл из типичного App.config
.
Я пытаюсь определить, содержит ли файл test.config
необязательное свойство TestProperty
из кода. Я пытался использовать TestProperty.ElementInformation.IsPresent
, но это всегда приводит к значению FLASE, даже когда элемент section действительно существует.
class Program
{
static void Main(string[] args)
{
string filePath = @"C:\Users\username\Desktop\TestProject\ConfigTestApp\Test.Config";
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(filePath);
fileMap.ExeConfigFilename = Path.GetFileName(filePath);
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
TestConfigSection section = config.GetSection("TestConfigSection") as TestConfigSection;
bool isPresent = section.TestProperty.ElementInformation.IsPresent; // Why is this always false?
}
}
Файл test.config
выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name ="TestConfigSection" type ="ConfigTestApp.TestConfigSection, ConfigTestApp"/>
</configSections>
<TestConfigSection>
<TestProperty testvalue="testing 123" />
</TestConfigSection>
</configuration>
Классы поддержки:
public class TestConfigSection : ConfigurationSection
{
[ConfigurationProperty("TestProperty", IsRequired = true)]
public TestConfigElement TestProperty
{
get
{
return base["TestProperty"] as TestConfigElement;
}
}
}
public class TestConfigElement : ConfigurationElement
{
[ConfigurationProperty("testvalue", IsKey = true, IsRequired = true)]
public string TestValue
{
get { return base["testvalue"] as string; }
set { base["testvalue"] = value; }
}
}
Если я переместлю раздел в App.config и использую ConfigurationManager.GetSection("TestConfigSection")
, IsPresent, кажется, будет работать нормально, но мне нужно, чтобы это работало из отдельного файла (test.config).
Есть ли способ заставить TestProperty.ElementInformation
работать или каким-либо другим способом определить, содержит ли файл test.config свойство TestProperty
?