C# 获取config文件 实体转换
随着项目的扩展,单独的key,value配置文件已经不能满足需求了
这里需要自定义配置节点,例如
<!--自定义 具体实体类配置问节点信息-->
<School Name="红旗小学" Number="" Address="北京市,西城区……"></School>
当然,这样的节点可以有多重获取方式,讲自己认为比较好的方式总结一下,仅供参考
可以将当前节点当做试题Model来配置,这样方便管理和操作,下面说明下如何进行转换
1、首先定义实体,因为需要转换,这里用到了configSections的section 节点,配置实体的命名空间
然后试题还需要继承ConfigurationSection类
namespace Model
{
/// <summary>
/// 学校实体
/// </summary>
public class School : ConfigurationSection
{
//获取属性名称
[ConfigurationProperty("Name", IsRequired = false)]
public string Name
{
get
{
//返回配置文件属性值
return this["Name"].ToString();
}
}
[ConfigurationProperty("Number", IsRequired = false)]
public int Number
{
get
{
int i = ;
int.TryParse(this["Number"].ToString(), out i);
return i;
}
}
[ConfigurationProperty("Address", IsRequired = false)]
public string Address
{
get
{
return this["Address"].ToString();
}
}
}
}
2、理由ExeConfigurationFileMap类将自定义配置文件转换为Configuration类
然后从Configuration类中获取section节点属性,转换为Model实体进行返回
  #region 初始化配置
         /// <summary>
         /// 初始化配置文件
         /// </summary>
         private static void ConfigDataLoad()
         {
             //获取文件路径
             string fileName = AppDomain.CurrentDomain.BaseDirectory + @"Configuration\TestModel.config";
             if (File.Exists(fileName))
             {
                 ExeConfigurationFileMap file = new ExeConfigurationFileMap
                 {
                     ExeConfigFilename = fileName
                 };
                 //将文件转换为Configuration
                 Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None);
                 //初始化对象
                 SetCustomModel(config);
             }
             else
             {
                 throw new Exception("配置文件不存在");
             }
         }
         /// <summary>
         /// 初始化值配置文件为实体Model
         /// </summary>
         private static void SetCustomModel(Configuration config)
         {
             _school = ((School)config.GetSection("School"));
         }
         #endregion
完整帮助类代码如下
/// <summary>
/// 自定义配置文件 实体转换
/// </summary>
public class ConfigToModelHelper
{
#region 初始化自定义节点为Model
private static School _school;
public static School School
{
get
{
if (_school == null)
{
ConfigDataLoad();
}
return _school;
}
}
#endregion #region 初始化配置 /// <summary>
/// 初始化配置文件
/// </summary>
private static void ConfigDataLoad()
{
//获取文件路径
string fileName = AppDomain.CurrentDomain.BaseDirectory + @"Configuration\TestModel.config";
if (File.Exists(fileName))
{
ExeConfigurationFileMap file = new ExeConfigurationFileMap
{
ExeConfigFilename = fileName
};
//将文件转换为Configuration
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None); //初始化对象
SetCustomModel(config);
}
else
{
throw new Exception("配置文件不存在");
}
}
/// <summary>
/// 初始化值配置文件为实体Model
/// </summary>
private static void SetCustomModel(Configuration config)
{
_school = ((School)config.GetSection("School"));
}
#endregion }
调用:
School school = ConfigToModelHelper.School;
C# 获取config文件 实体转换的更多相关文章
- c# 根据配置文件路径,设置和获取config文件  appSettings 节点值
		
/// <summary> /// 获取编译后的主配置文件节点值 /// </summary> /// <param name="key">&l ...
 - 对获取config文件的appSettings节点简单封装
		
转:http://www.cnblogs.com/marvin/archive/2011/07/29/EfficiencyAppSetting.html C#的开发中,无论你是winform开发还是w ...
 - C# 获取config文件的值
		
自定义配置文件帮助类 利用ExeConfigurationFileMap类将自定义配置文件转换为Configuration类进行数据读取 代码很简单,就不做扼要说明 /// <summary&g ...
 - 获取 config文件的节点值
		
System.Configuration.ConfigurationManager.AppSettings["followTemplate"];
 - 修改和获取web.config或app.config文件appSettings配置节中的Add里的value属性 函数
		
1: /// <summary> 2: /// 修改web.config或app.config文件appSettings配置节中的Add里的value属性 3: /// </summ ...
 - C# 获取或设置指定 config 文件的值
		
ExeConfigurationFileMap 这个类提供了修改.获取指定 config 的功能:新建一个 ExeConfigurationFileMap 的实例 ecf :并设置 ExeConfig ...
 - 在.net中读写config文件的各种方法
		
阅读目录 开始 config文件 - 自定义配置节点 config文件 - Property config文件 - Element config文件 - CDATA config文件 - Collec ...
 - IOC注入框架——Unity中Web.Config文件的配置与调用
		
Unity 应用程序块可以从 XML 配置文件中读取配置信息.配置文件可以是 Windows Forms 应用程序的 App.config 或者 ASP.NET 应用程序的 Web.config.当然 ...
 - Unity中Web.Config文件的配置与调用
		
在上一篇文章“Unit简单依赖注入”我们可以实现构造对象和被依赖对象之间的 松耦合,使我们的抽象层(Player)能够保持稳定,但是在并没有把客户类和Player类之间彻底解耦,即当我们不想使用MP3 ...
 
随机推荐
- CSharp程序员学Android开发---3.Android内部元素不填充BUG
			
最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历 ...
 - 设计模式之模版方法模式(Template Method Pattern)
			
一.什么是模版方法模式? 首先,模版方法模式是用来封装算法骨架的,也就是算法流程 既然被称为模版,那么它肯定允许扩展类套用这个模版,为了应对变化,那么它也一定允许扩展类做一些改变 事实就是这样,模版方 ...
 - asp.net core 的用户注册功能——Identity上手
			
首先请using这个类库. using Microsoft.AspNetCore.Identity; 这个类库老牛逼了,首先是包含了一个IdentityUser类.我们可以自己写一个User类继承Id ...
 - hdu  4325 Flowers(区间离散化)
			
http://acm.hdu.edu.cn/showproblem.php?pid=4325 Flowers Time Limit: 4000/2000 MS (Java/Others) Mem ...
 - c# 协变与抗变
			
定义 协变:与原始类型转换方向相同的可变性称为协变. 抗变:与派生类型转换方向相同的可变性称为抗变. 补充: 参数是协变的,可以使用派生类对象传入需要基类参数的方法,反之不行 返回值是抗变的,不能使用 ...
 - 网络流——二分图最优匹配KM算法
			
前言 其实这个东西只是为了把网络流的内容凑齐而写的(反正我是没有看到过这样子的题不知道田忌赛马算不算) 算法过程 我们令左边的点(其实二分图没有什么左右)为女生,右边的点为男生,那么: 为每一个女生定 ...
 - 程序媛计划——python初级课时3~5
			
产生1-10中的随机数: for 循环:所有可遍历对象都能用于for循环,如一个字符串. len(list),list中的元素类型可以各不相同:可以直接用下标对list元素赋值来更新列表 对字符串可以 ...
 - 模糊测试之AVI文件分析
			
本次试验主要是针对AVI的处理,了解AVI的基本概念,并且掌握AVI文件常用的程序读写方法.知道AVI视频文件的帧的读取方法,以及了解BMP和AVI的基本关系. 本文作者:i春秋签约作家——天天 一 ...
 - git修改文件权限方式
			
查看Repository中文件权限 git ls-tree HEAD 100644 blob 018321abfbff52d175a788597f5b5f3f17f67dc7 .gitignore 1 ...
 - Github只下载某一目录的文件
			
比如要下载: https://github.com/xubo245/SparkLearning/tree/master/docs 将“tree/master”改成“trunk https://gith ...