Dotnet 2.0配置系统

简介:
今天使用VS2005开发一个Windows服务,发现dotnet2.0的配置系统相对于1.x的功能变化很大。记录下来同各位共享。
.NET Framework 1.1 提供一个基本的应用程序配置机制,以允许您定义应用程序配置文件中的只读应用程序设置。您可以通过System.Configuration.AppSettings类来访问这些设置,该类通过键来检索设置,并且返回一个必须转换为合适类型的弱类型对象。此机制对于简单情况而言是非常有用的,这些简单情况专注于一般只能由管理员修改的相对静态的数据。但是,许多其它应用程序配置的情况要求有一个更强大、更灵活的解决方案。.NET Framework 2.0 和 Visual Studio 2005 为 Windows 窗体应用程序提供了一个新的配置系统。该系统解决了先前解决方案的限制,并且引入了许多新概念,使您感受到更完整、更有效的设计时体验和更加个性化的最终用户体验。
配置设置该配置系统对配置设置的定义、读取以及写入提供了更强大的支持。每个设置均按其名称、数据类型、作用域、默认值以及可访问性进行定义。所有的设置都是强类型的,并且您可以指定任何可序列化的类型。该配置系统支持许多持久化设置值的机制,包括字符串表示、XML 序列化以及二进制序列化。还可以将设置定义为如下两个作用域之一:用户或应用程序。应用程序设置是只读的,并且其值由计算机上此应用程序的所有用户共享。默认情况下,这些值存储在应用程序配置文件中。下面是一些配置设置的示例:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <configSections>
      <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
         <section name="BigTeam.WindowsService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      </sectionGroup>
   </configSections>
   <applicationSettings>
      <BigTeam.WindowsService.Properties.Settings>
         <setting name="BigTeam_WindowsService_JoinJobService_SecurityService"
            serializeAs="String">
            <value>[url]http://localhost/BigTeam.Security/SecurityService.asmx</value>[/url]
         </setting>
         <setting name="IntervalMinutes" serializeAs="String">
            <value>5</value>
         </setting>
      </BigTeam.WindowsService.Properties.Settings>
   </applicationSettings>
</configuration>
包装类配置系统需要您使用包装类来访问存储于配置存储中的设置。这些包装类向配置系统提供了强类型的接口,并且提供了完整描述每个设置的元数据。这就允许包装类的用户无需直接访问配置文件就可以理解每个设置的配置方式。
注您应该了解,配置系统是通过一个可插入的体系结构来连接设置存储的。最初,系统只支持配置文件中的存储设置,但是最后会支持许多潜在的设置存储。
下面是先前显示的设置的包装类:
namespace BigTeam.WindowsService.Properties {   
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {       
        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
       
        public static Settings Default {
            get {
                return defaultInstance;
            }
        }
       
        [global::System.Configuration.ApplicationScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)]
        [global::System.Configuration.DefaultSettingValueAttribute(" [url]http://localhost/BigTeam.Security/SecurityService.asmx[/url]")]
        public string BigTeam_WindowsService_JoinJobService_SecurityService {
            get {
                return ((string)(this["BigTeam_WindowsService_JoinJobService_SecurityService"]));
            }
        }
       
        [global::System.Configuration.ApplicationScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("5")]
        public string IntervalMinutes {
            get {
                return ((string)(this["IntervalMinutes"]));
            }
        }
    }
}
在应用程序代码中使用包装类来访问和修改配置设置。例如,下面的代码用于检索存储在名为 BigTeam_WindowsService_JoinJobService_SecurityService用户设置中的 WebService的URL。BigTeam.WindowsService.Properties.Settings setting = new BigTeam.WindowsService.Properties.Settings();
string urlSettings = setting.BigTeam_WindowsService_JoinJobService_SecurityService; //这里可以从配置文件中获取
 IDE支持虽然可以手动创建配置文件和包装类,但是 Visual Studio 2005 对这两个任务都提供完全的 IDE 支持。在 Visual C# .NET 中,可以通过右键单击解决方案资源管理器中的项目并选择“Properties”来访问设置设计器。在属性页列表中,选择“Settings”。将看到一个设计器,它允许您定义应用程序和用户设置的所有方面。在设计器中保存更改时,Visual C# 会自动创建并填充相应的配置文件。它还将创建一个包装类,并通过 Settings 使该包装类可作为 Settings进行访问。





本文转自 张善友 51CTO博客,原文链接:http://blog.51cto.com/shanyou/75200,如需转载请自行联系原作者
目录
相关文章
|
存储 缓存 NoSQL
数据库索引结构 | 学习笔记
快速学习数据库索引结构
数据库索引结构 | 学习笔记
|
关系型数据库 MySQL 网络安全
【Python】操作数据库MySQL
本篇内容介绍了“怎么用Python操作MySQL”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让我带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
【Python】操作数据库MySQL
|
3天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
271 116
|
18天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
12天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
663 219
|
5天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
349 34
Meta SAM3开源:让图像分割,听懂你的话
|
10天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1562 157