c#-如何确定“ ConfigurationElement”自定义配置设置上是否可用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-如何确定“ ConfigurationElement”自定义配置设置上是否可用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3951字,纯文字阅读大概需要6分钟。
内容图文
我已经为我的应用程序编写了一个自定义配置,但是我没有正确的方法来确定ConfigurationSection中是否不存在任何ConfigurationElement.
这是我的自定义配置app.config代码
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="ApplicationsSettings" type="App.Configuration.ConfigurationGroup, App.Configuration.Core">
<section name="DataExtractorSettings" type="App.Configuration.DataExtractorConfig, App.Configuration.Core" />
</sectionGroup>
</configSections>
<ApplicationsSettings>
<DataExtractorSettings>
<executionLog>
<enabled value="Y" />
<copyOnReportDirectory value="Y" />
<logFilePath value="D:\MyBatchProcessLog\MasterDataExtractor" />
</executionLog>
<eMail>
<fromEmailID value="gupta@gmail.com" />
<webURL value="http://PROD/login.aspx" />
</eMail>
<!--<parallelProcessing>
<allowed value="Y" />
<threds value="6" />
</parallelProcessing>-->
</DataExtractorSettings>
</ApplicationsSettings>
</configuration>
类DataExtractorConfig
namespace App.Configuration
{
[SettingProperty(Name: "dataExtractorSettings")]
public class DataExtractorConfig : ConfigurationSection
{
[ConfigurationProperty("executionLog")]
public LogConfig ExecutionLog
{
get
{
if (base["executionLog"] != null)
{
return (LogConfig)base["executionLog"];
}
else
{
return null;
}
}
}
[ConfigurationProperty("parallelProcessing")]
public ParallelProcessConfig ParallelProcessing
{
get
{
if (base["parallelProcessing"] != null)
{
return (ParallelProcessConfig)base["parallelProcessing"];
}
else
{
return null;
}
}
}
[ConfigurationProperty("eMail")]
public EmailConfig Email
{
get
{
if (base["eMail"] != null)
{
return (EmailConfig)base["eMail"];
}
else
{
return null;
}
}
}
}
}
这是从App.config文件读取设置的代码
public static class ConfigurationReader
{
private const string _customSeetingParentNode = "ApplicationsSettings";
public static T GetSettings<T>(string configFileName = "AppSettings.xml", string sectionGroupName = "ApplicationsSettings")
{
System.Configuration.Configuration config;
ConfigurationSection customConfig;
ExeConfigurationFileMap fileMap;
T result;
string settingKey;
try
{
fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = string.Format("{0}\\{1}", AppDomain.CurrentDomain.BaseDirectory, configFileName);
config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
var caSetting = typeof(T).GetCustomAttributes(typeof(SettingProperty), false);
string sectionName;
dynamic dynSettingClass = null;
if (caSetting != null && caSetting.Length > 0)
{
settingKey = (caSetting[0] as SettingProperty).Name;
sectionName = string.Concat(_customSeetingParentNode, "/", settingKey);
customConfig = (ConfigurationSection)config.GetSection(sectionName);
if (customConfig != null && customConfig.ElementInformation.IsPresent)
{
//Here how do I determine the <parallelProcessing> setting is present or not in configuration file,
//like currently it is commented in app config file so the parallelProcessingExists should set with false
//bool parallelProcessingExists = ?
dynSettingClass = customConfig;
}
else
{
dynSettingClass = Activator.CreateInstance(typeof(T));
}
}
else
{
dynSettingClass = Activator.CreateInstance(typeof(T));
}
result = (T)Convert.ChangeType(dynSettingClass, typeof(T));
return result;
}
finally
{
config = null;
customConfig = null;
fileMap = null;
}
}
}
这是从app.config文件中读取设置的代码
DataExtractorConfig settigns = ConfigurationReader.GetSettings<DataExtractorConfig>();
如何确定配置文件中是否存在“ parallelProcessing”设置,例如当前在应用程序配置文件中已注释,因此parallelProcessingExists应该设置为false.
解决方法:
您创建了DataExtractorConfig类,因此让我们使用它.从GetSection方法返回的对象可以强制转换为DataExtractorConfig.现在,您可以轻松访问ParallelProcessing,Email,ExecutionLog属性,并检查是否存在相应的配置部分.例如:
var customConfig = (DataExtractorConfig)config.GetSection(sectionName);
if (customConfig != null && customConfig.ElementInformation.IsPresent)
{
if(customConfig.ParallelProcessing.ElementInformation.IsPresent)
{
// TODO
}
else
{
// TODO
}
dynSettingClass = customConfig;
}
内容总结
以上是互联网集市为您收集整理的c#-如何确定“ ConfigurationElement”自定义配置设置上是否可用全部内容,希望文章能够帮你解决c#-如何确定“ ConfigurationElement”自定义配置设置上是否可用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。