Dotnet 2.0配置系统
今天使用VS2005开发一个Windows服务,发现dotnet2.0的配置系统相对于1.x的功能变化很大。记录下来同各位共享。 配置设置该配置系统对配置设置的定义、读取以及写入提供了更强大的支持。每个设置均按其名称、数据类型、作用域、默认值以及可访问性进行定义。所有的设置都是强类型的,并且您可以指定任何可序列化的类型。该配置系统支持许多持久化设置值的机制,包括字符串表示、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,PublicKeyToken=b77a5c561934e089" requirePermission="false" /> ????? </sectionGroup> ?? </configSections> ?? <applicationSettings> ????? <BigTeam.WindowsService.Properties.Settings> ???????? <setting name="BigTeam_WindowsService_JoinJobService_SecurityService" ??????????? serializeAs="String"> ??????????? <value>http://localhost/BigTeam.Security/SecurityService.asmx</value> ???????? </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("http://localhost/BigTeam.Security/SecurityService.asmx")] ??????? 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(); ?IDE支持虽然可以手动创建配置文件和包装类,但是 Visual Studio 2005 对这两个任务都提供完全的 IDE 支持。在 Visual C# .NET 中,可以通过右键单击解决方案资源管理器中的项目并选择“Properties”来访问设置设计器。在属性页列表中,选择“Settings”。将看到一个设计器,它允许您定义应用程序和用户设置的所有方面。在设计器中保存更改时,Visual C# 会自动创建并填充相应的配置文件。它还将创建一个包装类,并通过 Settings 使该包装类可作为 Settings进行访问。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |