.NET 配置文件简单使用

 我来答
会哭的礼物17
2022-11-03 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5889
采纳率:100%
帮助的人:31.6万
展开全部

  当我们开发系统的时候要把一部分设置提取到外部的时候 那么就要用到 NET的配置文件了 比如我的框架中使用哪个IOC容器需要可以灵活的选择 那我就需要把IOC容器的设置提取到配置文件中去配置 实现有几种方法

   使用appSettings

  这个是最简单的可以设置和读取的用户设置

  程序中可以用key去读取

  string objContainer = ConfigurationManager AppSettings[ objectContainer ];

  简单实用但是不够优雅

   实现自己的配置节点

  首先在configSections节点配置自己的配置解析类

  那么如何来解析这段配置呢?有两个办法

  方法

  实现IConfigurationSectionHandler接口来自己解析配置文件的xml文件

  public class ObjectContainerElement

  {

  public string Provider {get;set;}

  public string IocModule {get; set;}

  }

  public class AgileFRConfigurationHandler: IConfigurationSectionHandler

  {

  public object Create(object parent object configContext XmlNode section)

  {

  var node =section ChildNodes[ ];

  if (node Name != objectContainer )

  throw new ConfigurationErrorsException( 不可识别的配置项 node);

  var config = new ObjectContainerElement();

  foreach (XmlAttribute attr in node Attributes)

  {

  switch (attr Name)

  {

  case provider :

  config Provider = attr Value;

  break;

  case iocModule :

  config IocModule = attr Value;

  break;

  default:

  throw new ConfigurationErrorsException( 不可识别的配置属性 attr);

  }

  }

  }

  return config;

  }

  //使用

  var config = ConfigurationManager GetSection( agileFRConfiguration ) as ObjectContainerElement;

  这个方法看上去就略 *** 了 不过就是太麻烦了

  方法

  继承ConfigurationSection类 配合ConfigurationProperty特性来实现

  public class ObjectContainerElement : ConfigurationElement

  {

  [ConfigurationProperty( provider IsRequired = true)]

  public string Provider

  {

  get

  {

  return (string)this[ provider ];

  }

  set

  {

  this[ provider ] = (object)value;

  }

  }

  [ConfigurationProperty( iocModule IsRequired = false)]

  public string IocModule

  {

  get

  {

  return (string)this[ iocModule ];

  }

  set

  {

  this[ iocModule ] = (object)value;

  }

  }

  }

  ///

  /// 配置处理类

  ///

  public class AgileFRConfigurationHandler : ConfigurationSection

  {

  [ConfigurationProperty( objectContainer IsRequired = true)]

  public ObjectContainerElement ObjectContainer

  {

  get

  {

  return (ObjectContainerElement)this[ objectContainer ];

  }

  set

  {

  this[ objectContainer ] = (object)value;

  }

  }

  }

  //使用

  var configurationHandler = (AgileFRConfigurationHandler)ConfigurationManager GetSection( agileFRConfiguration );

  var objectContainer=configurationHandler ObjectContainer;

  这个方法简单优雅 我喜欢

   Settings settings

lishixinzhi/Article/program/net/201311/12163

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式