首页 > 其他分享 >App.Config文件复杂对象自动映射

App.Config文件复杂对象自动映射

时间:2023-12-24 19:33:44浏览次数:32  
标签:XML 映射 get App 配置 接口 interface Config AutoConfig

Nerdle.AutoConfig 是什么

.Net Framework 使用 app.config XML文件作为默认的配置文件, visual studio也提供很方便的配置管理功能, 甚至可以自动将配置项映射到 Settings 类, 但这仅限于简单的数据类型, 比如 string/int 等. 对于复杂类型, 需要我们自己写映射代码才行.

Nerdle.AutoConfig 实现了通用的复杂类型配置映射功能, 扩展性很好, 能适应不同配置需求.

使用步骤

  1. 在代码中定义配置类接口, 注意是 interface.
  2. 在程序初始化时, 完成XML文件和配置类接口的绑定.
  3. 在app.config XML文件 增加一个
    , 明确后续自定义配置项名称和Nerdle AutoConfig处理类.
  4. 在app.config XML文件中增加自定义的配置.

注意事项

  1. 接口成员变量首字母可以大写也可以小写, 但 Xml 中的 tag 和 attribute 必须是小写, 否则无法完成映射
  2. 接口成员变量默认都需要在Xml中设置, 如果xml不设置, 成员变量需要增加 [DefaultValue] 特性
  3. 类中可定义 IEnumerable<> 类型成员, xml 中需要有子tag集合对应.
  4. 类中可定义 IDictionary<> 类型成员, xml 中需要有子tag集合对应, 每个 XML 子 tag 必须提供 key 和 value attribute4

代码示例

  1. app.config 文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<configSections>
		<!-- 在app.config XML文件 <configSections> 增加 <section>, 明确后续自定义配置项名称和Nerdle AutoConfig处理类.  -->
		<section name="turboConfiguration" type="Nerdle.AutoConfig.Section, Nerdle.AutoConfig" />
	</configSections>
	<startup>
		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
	</startup>

	<!-- 在app.config XML文件中增加自定义的配置.  -->
	<turboConfiguration>
		<defaultProfileName>dev</defaultProfileName>
		<nameMapping>
			<anyTag key="1" value="A" />
			<anyTag key="2" value="B" />
		</nameMapping>

		<turboProfiles>
			<turboProfile>
				<profileName>dev</profileName>
				<webPort>8080</webPort>
			</turboProfile>
			<turboProfile>
				<profileName>production</profileName>
				<webPort>80</webPort>
			</turboProfile>
		</turboProfiles>
	</turboConfiguration>
</configuration>
  1. 配置接口定义
    /// <summary>
    ///在代码中定义配置类接口, 注意是 interface.  
    /// </summary>
    public interface ITurboConfiguration
    {
        IEnumerable<ITurboProfile> TurboProfiles { get; }
        string defaultProfileName { get; }

        [DefaultValue("no input")]
        string details { get; }

        IDictionary<string, string> nameMapping { get; }
    }


    /// <summary>
    /// 在代码中定义配置类接口, 注意是 interface.  
    /// </summary>
    public interface ITurboProfile
    {
        string ProfileName { get; }
        int webPort { get; }
    }
  1. XML文件和配置接口的绑定代码

        /// <summary>
        /// 在程序初始化时, 完成XML文件和配置类接口的绑定. 
        /// </summary>
        private void loadXmlConfig()
        {
            ITurboConfiguration xmlConfig = Nerdle.AutoConfig.AutoConfig.Map<ITurboConfiguration>();
        }

标签:XML,映射,get,App,配置,接口,interface,Config,AutoConfig
From: https://www.cnblogs.com/harrychinese/p/17924757.html

相关文章

  • @ConfigurationProperties(prefix = “xx.xx.xx“) 从配置文件中取值赋给类的属性
    @ConfigurationProperties(prefix=“xx.xx.xx“)从配置文件中取值赋给类的属性@ConfigurationProperties(prefix=“xx.xx.xx”)该注解的作用是从配置文件中取值赋给类的属性,当然也可以为方法的变量赋值/***服务访问URL*/@Component@ConfigurationProperties(value......
  • WorkPlus超级APP助力企业节省IT人力成本,实现快速移动化
    在信息化时代,移动应用已经成为企业发展的重要组成部分。然而,开发和维护原生客户端的成本却相对较高,需要大量的iOS、安卓和桌面端工程师。为了解决这一问题,WorkPlus作为一个功能完备的超级APP,为企业节约了大量的IT人力成本。通过使用WorkPlus,企业不需要额外雇佣iOS、安卓和桌面端工......
  • MappingJackson2HttpMessageConverter使用及jackson配置原理和避坑说明
    转载自:https://blog.csdn.net/Heron22/article/details/109512976MappingJackson2HttpMessageConverter消息转换器创建和生效原理HttpMessageConverters对象的创建使用WebMvcConfigurationSupport配置时转换器创建过程使用WebMvcAutoConfiguration配置时转换器创建过......
  • C语言全局变量的extern+typedef函数指针+uvm_queue/pool/config_db/resource_db/barri
    C语言全局变量的extern全局变量在不同的文件引用,需要加上extern,才能引用到。如果没有extern关键词,则认为是一个定义,而不是引用,引发同名冲突。函数也是一样。要在本文件引用其它文件的函数,需要增补extern关键字。而其它文件,声明和定义过该函数。typedef函数指针https://zhuan......
  • 如何通过蛋壳Uploader把ipa文件上传到App Store教程步骤
    在移动应用开发的过程中,将ipa文件上传至AppStore是非常关键的一环。对于那些没有Mac电脑的开发者来说,这一步骤可能会成为一个挑战。幸运的是,有一个名为“蛋壳Uploader”的在线工具,可以帮助开发者在没有Mac的情况下,轻松上传ipa文件到AppStore。一、准备工作在使用蛋壳Uploader......
  • 【UniApp】-uni-app-项目实战页面布局(苹果计算器)
    前言经过前面的文章介绍,基本上UniApp的内容就介绍完毕了那么从本文开始,我们就开始进行一个项目的实战这次做的项目是苹果计算器,这个项目的难度不是很大,但是也不是很简单,适合练手创建项目打开HBuilderX,点击左上角文件->新建->项目:搭建基本布局项目创建完毕之......
  • uniapp框架——初始化vue3项目(搭建ai项目第一步)
    文章目录⭐前言......
  • WebMvcConfigurerAdapter
    WebMvcConfigurerAdapter 是SpringBoot1.x版本中用于自定义SpringMVC配置的一个类。但在SpringBoot2.x之后,这个类已经被标记为废弃,并推荐使用 WebMvcConfigurer 接口来替代。WebMvcConfigurerAdapter 提供了默认的实现,使得你可以在无需扩展 WebMvcConfigurer 接口......
  • Java登陆第二十九天——ServletConfig和ServletContext
    ServletConfigServletConfig是web.xml中,Servlet的初始化参数对象(每个Servlet都有一个ServletConfig对象)web.xml<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://ww......
  • 童年神机小霸王(七) Mapper
    Mappermapper,这个概念来源于memorymapping,又叫做MemoryManagementCircuit,它是解决地址映射的一种电路,简单来说就是决定物理内存如何映射到CPU或者PPU的地址空间。mapper可以用来支持增加卡带的RAM甚至支持额外的音频通道,但更一般的目的就是控制物理内存到地址空间的映......