C# App.config学习

进入公司一年多来,对配置文件添加了不少参数,但是从未想过这些参数是如何被读取出来的,今天把读取参数的处理看了一下,收获不少。假定有App.config如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="family" type="FirstRowTest.Configuration.Settings,FirstRowTest"/>
  </configSections>
<family>
  <familymember>
    <member status="father"
            birth="1954"
            name="AA"
            hobby="reading books">
    </member>
    <member status="mother"
            birth="1958"
            name="BB"
            hobby="chatting">
    </member>
    <member status="elder brother"
            birth="1982"
            name="CC"
            hobby="money">
    </member>
    <member status="younger brother"
            birth="1986"
            name="DD"
            hobby="computer">
    </member>
  </familymember>
</family>
  <appSettings>
    <add key="address" value="maling"/>
  </appSettings>
</configuration>

构造:

    public class Param:System.Configuration.ConfigurationElement
    {
        [System.Configuration.ConfigurationProperty("status")]
        public string Status
        {
            get
            {
                return this["status"] as string;
            }
            set
            {
                this["status"] = value;
            }
        }
        [System.Configuration.ConfigurationProperty("birth")]
        public string Birth
        {
            get
            {
                return this["birth"] as string;
            }
            set
            {
                this["birth"] = value;
            }
        }
        [System.Configuration.ConfigurationProperty("name")]
        public string Name
        {
            get
            {
                return this["name"] as string;
            }
            set
            {
                this["name"] = value;
            }
        }
        [System.Configuration.ConfigurationProperty("hobby")]
        public string Hobby
        {
            get
            {
                return this["hobby"] as string;
            }
            set
            {
                this["hobby"] = value;
            }
        }
    }

    public class Params:System.Configuration.ConfigurationElementCollection
    {
        protected override System.Configuration.ConfigurationElement CreateNewElement()
        {
            return new Param();
        }
        protected override object GetElementKey(System.Configuration.ConfigurationElement element)
        {
            Param param = element as Param;
            return param.Status;
        }
        protected override string ElementName
        {
            get
            {
                return "member";
            }
        }
        public override System.Configuration.ConfigurationElementCollectionType CollectionType
        {
            get
            {
                return System.Configuration.ConfigurationElementCollectionType.BasicMap;
            }
        }

    }

    public class Settings:System.Configuration.ConfigurationSection
    {
        [System.Configuration.ConfigurationProperty("familymember")]
        public Params FamilyMember
        {
            get
            {
                return this["familymember"] as Params;
            }
            set
            {
                this["familymember"] = value;
            }
        }
    }

调用:

        public FrmMain()
        {
            InitializeComponent();
        }
        private void FrmMain_Load(object sender, EventArgs e)
        {
            System.Configuration.Configuration cfg = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None);
            //Settings setting = cfg.GetSection("family") as Settings;
            Settings setting = System.Configuration.ConfigurationManager.GetSection("family") as Settings;
            Param first = null;
            if (null != setting)
            {
                foreach (Param p in setting.FamilyMember)
                {
                    if (null == first)
                    {
                        first = p;
                    }
                    this.richTextBox1.AppendText(string.Format("status:{0}|birth:{1}|name:{2}|hobby:{3}\r\n",

                                                                p.Status, p.Birth, p.Name, p.Hobby));
                }
            }
            //cfg.Save();
            System.Configuration.ConfigurationManager.RefreshSection("family");
        }
    }

如果需要进行保存,则处理上有一点变动:

    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
        }
        private void FrmMain_Load(object sender, EventArgs e)
        {
            System.Configuration.Configuration cfg = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None);
            Settings setting = cfg.GetSection("family") as Settings;
            //Settings setting = System.Configuration.ConfigurationManager.GetSection("family") as Settings;
            Param first = null;
            if (null != setting)
            {
                foreach (Param p in setting.FamilyMember)
                {
                    if (null == first)
                    {
                        first = p;
                    }
                    this.richTextBox1.AppendText(string.Format("status:{0}|birth:{1}|name:{2}|hobby:{3}\r\n",

                                                                p.Status, p.Birth, p.Name, p.Hobby));
                }
            }

            first.Name = "I dont know";
            cfg.Save();
            //System.Configuration.ConfigurationManager.RefreshSection("family");
        }

保存结果:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="family" type="FirstRowTest.Configuration.Settings,FirstRowTest"/>
  </configSections>
<family>
  <familymember>
    <member status="father" birth="1954" name="I dont know" hobby="reading books" />
    <member status="mother" birth="1958" name="BB" hobby="chatting" />
    <member status="elder brother" birth="1982" name="CC" hobby="money" />
    <member status="younger brother" birth="1986" name="DD" hobby="computer" />
  </familymember>
</family>
  <appSettings>
    <add key="address" value="maling"/>
  </appSettings>
</configuration>

 

上面学习了配置文件读取的处理方式,但是没有对经常用到的 <appSettings>进行学习,其实这些参数的读取要简单得多:
假设有如下配置参数

  <appSettings>
    <add key="address" value="China"/>
  </appSettings>

读取:

string address=System.Configuration.ConfigurationManager.AppSettings["address"].ToString();

事实就是这么简单

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据-----软件开发模型(详细讲解)

大数据学习免费学习资料&#xff08;免费教程&#xff09; 软件工程中&#xff0c;常用的开了模型有四种&#xff1a;瀑布模型、原型模型、增量模型和螺旋模型。 ⒈瀑布模型包括计划&#xff0c;需求分析、设计、编码、测试、运行维护六个阶段&#xff0c;阶段自上而下&#x…

C#中struct和class的区别详解

本文详细分析了C#中struct和class的区别&#xff0c;对于C#初学者来说是有必要加以了解并掌握的。 简单来说&#xff0c;struct是值类型&#xff0c;创建一个struct类型的实例被分配在栈上。class是引用类型&#xff0c;创建一个class类型实例被分配在托管堆上。但struct和cla…

ssm框架搭建连接mysql_从零开始搭建SSM框架(Spring + Spring MVC + Mybatis)

最近在回顾和总结一些技术&#xff0c;想到了把之前比较火的 SSM 框架重新搭建出来&#xff0c;作为一个小结&#xff0c;同时也希望本文章写出来能对大家有一些帮助和启发&#xff0c;因本人水平有限&#xff0c;难免可能会有一些不对之处&#xff0c;欢迎各位大神拍砖指教&am…

基于TFS实践敏捷-可视化管理

TFS是基于微软平台一套不错的系统&#xff0c;支持源码管理运行调试持续集成自动化测试Bug管理代码评审任务项管理文档管理沟通管理。 基于TFS 2015实践看板管理&#xff0c;让团队的数据可视化&#xff0c;让大家更多的关心产品、关注团队的努力&#xff0c;增强沟通、及时反映…

[转载]基于TFS实践敏捷-修复Bug和执行代码评审

本主题阐释了这些功能&#xff0c;以继续这一关注虚拟敏捷团队成员的一天的教程。 Peter 忙于编写一些代码以完成积压工作 (backlog) 项任务。但是&#xff0c;他的同事发现了一个阻碍他们工作的 Bug&#xff0c;他想立即修复此 Bug。 他暂停了手中的工作并修复此 Bug。 他请求…

单元测试入门

https://docs.microsoft.com/zh-cn/visualstudio/test/getting-started-with-unit-testing?viewvs-2019 使用 Visual Studio 定义和运行单元测试&#xff0c;使代码保持正常运行、确保代码覆盖率并在客户之前找到错误和缺陷。 经常运行单元测试&#xff0c;确保代码正常运行。…

.net开源框架简介和通用技术选型建议

.net体系 .net core .net 类库 asp.net mvc asp.net webapi asp.net core EF 跨平台和运行时解决方案&#xff08;解决方案&#xff09; Katana&#xff1a;微软基于OWIN规范实现的非IIS寄宿ASP.NET和MVC等。 MONO.NET&#xff1a;跨平台的.NET运行环境&#xff0c;让.NE…

JAVA 2048源码_java实现2048游戏源代码

本文实例为大家分享了java实现2048游戏源代码&#xff0c;供大家参考&#xff0c;具体内容如下一.主要功能&#xff1a;1、游戏初始化&#xff1a;新建游戏44的16宫格画布&#xff0c;随机格子上生成2或者4两个数字2、格子的移动&#xff1a;先判断能否移动&#xff0c;移动后判…

开源干货!.NET Core + Vue.js通用动态权限(RBAC)管理系统框架[DncZeus]开源

DncZeus 前言 关于 DncZeus DncZeus Dnc Zeus "Dnc"--.Net Core 的缩写&#xff1b; "Zeus"--中文译为宙斯&#xff0c;是古希腊神话中的众神之王&#xff0c;奥林匹斯十二主神之首&#xff0c;统治宇宙万物的至高无上的主神&#xff08;在古希腊神…

十大开源的.NET用户界面框架 让GUI设计不再犯难

选择一款合适的GUI框架是.NET开发中比较重要但又很棘手的问题&#xff0c;因为用户界面相当于一款应用的"门面"&#xff0c;直接面向用户。好的UI更能吸引用户&#xff0c;有时甚至成为决定一款应用成败的关键。下面小编整理出十大应用最广泛.NET开源用户界面框架&am…

python flv转mp4_ffmpeg将多个flv文件合成为mp4(python版)

需求直播生成的flv片段需要做个归档&#xff0c;把指定的文件夹中的flv合并成一个mp4&#xff0c;简单的转码合并操作直接用命令行调用来实现。注意事项flv文件直接合并生成mp4的话只有第一个flv的内容才能播放&#xff0c;需要先转换成ts再合成mp4使用的第三方库ffmpy&#xf…

多租户技术

本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。 多租户技术&#xff08;英语&#xff1a;multi-tenancy technology&#xff09;或称多重租赁技术&#xff0c;是一种软件架构技术&#xff0c;它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件&…

使用开源工具ELK可视化 Azure NSG日志

国内的Azure最近上线了网络观察程序服务&#xff0c;可以帮助用户监控和分析VNET虚拟网络。其中一个很重要的功能就是可以记录NSG的安全访问日志了。但是如果用户设置了NSG流日志&#xff0c;并下载日志想要分析一下的话&#xff0c;会发现日志其实并不是很友好&#xff0c;NSG…

pythoncad二次开发视频_AutoCAD ObjectARX 二次开发(2020版)--4,使用ARX向导创建CAD二次开发项目(编程框架)--...

手动创建ObjectARX应用程序非常麻烦&#xff0c;在此步骤中&#xff0c;将介绍ObjectARX向导。在这里&#xff0c;我们将使用ObjectARX向导创建我们的ObjectARX应用程序。本节的程序的需求是&#xff0c;接收CAD用户的输入。首先&#xff0c;打开VS2017&#xff0c;新建项目在左…

Azure Data Explorer(Kusto)学习笔记

Azure Data Explorer 指南 Azure在2018年推出了Data Explorer产品&#xff0c;提供实时海量流数据的分析服务&#xff08;非流计算&#xff09;&#xff0c;面向应用、网站、移动端等设备。 用户可以查询&#xff0c;并交互式地对结果进行分析&#xff0c;以达到提升产品、增…

python将一列数据转换成向量_python读取csv和txt数据转换成向量的实例

最近写程序需要从文件中读取数据&#xff0c;并把读取的数据转换成向量。查阅资料之后找到了读取csv文件和txt文件两种方式&#xff0c;下面结合自己的实验过程&#xff0c;做简要记录&#xff0c;供大家参考&#xff1a;1、读取csv文件的数据import csvfiltpath "data_t…

Iaas,Paas,Saas三者的区别联系是什么?

本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。 多租户技术&#xff08;英语&#xff1a;multi-tenancy technology&#xff09;或称多重租赁技术&#xff0c;是一种软件架构技术&#xff0c;它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件&…

什么是ASP.NET Boilerplate Project(ABP)框架

使用.NET技术进行开发已经多年&#xff0c;偶尔一次网络上搜索.NET开发框架&#xff0c;看到了ABP这个框架&#xff0c;引起了我极大的兴趣&#xff0c;于是决定对该框架进行深入学习和研究&#xff0c;并将过程全部记录如下&#xff0c;对自己也是一次学习和总结&#xff0c;同…

使用ABP打造SAAS系统(2)——前端框架选择

一、流行框架比较 作者用过的前端框架不少&#xff0c;曾经还在一个项目中同时使用两套框架控件&#xff08;年少无知、效率特慢&#xff09;&#xff0c;所以可供选择的前端框架有不少&#xff1a; easyui&#xff1a; 优点&#xff1a;非常成熟的框架&#xff0c;基于iframe…

java 一元线性回归_一元线性回归的java实现

我们有两组数据&#xff0c;比如连续5年的pv与uv。我们想预测一下&#xff0c;uv达到500k那么pv会是多少。当然更有意思可能是&#xff0c;如果销售额是500w的话&#xff0c;pv会是多少。机器学习里的一元线性回归方法是比较简单的方法,就是我们猜是满足ywxb的。那么&#xff0…