[非专业翻译] Mapster - 配置实例
[非专业翻译] Mapster - 配置实例
系列介绍
[非专业翻译] 是对没有中文文档进行翻译的系列博客,文章由机翻和译者自己理解构成,和原文相比有所有不同,但意思基本一致。
因个人能力有限,如有谬误之处还请指正,多多包涵。
正文
本文将说明 Mapster 中的 配置实例
配置实例
在 Mapster 中,默认的配置实例为 TypeAdapterConfig.GlobalSettings ,如果需要在不同场景下有不同的映射配置,Mapster  提供了 TypeAdapterConfig 用于实现此需求:
var config = new TypeAdapterConfig();
config.Default.Ignore("Id");
如何给 配置实例 添加l类型映射配置?
直接使用 NewConfig 和 ForType 方法即可:
config.NewConfig<TSource, TDestination>()
        .Map(dest => dest.FullName,
            src => string.Format("{0} {1}", src.FirstName, src.LastName));
config.ForType<TSource, TDestination>()
        .Map(dest => dest.FullName,
            src => string.Format("{0} {1}", src.FirstName, src.LastName));
通过将  配置实例 作为参数传给 Adapt 方法来应用特定的类型映射配置:
注意! 配置实例 在程序中一定要作为单例存在,否则会影响性能!
var result = src.Adapt<TDestination>(config);
也可以创建一个指定  TypeAdapterConfig 的 Mapper,使用 Mapper 来做映射:
var mapper = new Mapper(config);
var result = mapper.Map<TDestination>(src);
复制配置实例
如果想从现有的配置中创建配置实例,可以使用 Clone 方法。
例如 复制全局配置实例 :
var newConfig = TypeAdapterConfig.GlobalSettings.Clone();
或者复制其它配置实例:
var newConfig = oldConfig.Clone();
Fork 配置
Fork 方法内部直接调用 Clone 方法,但是使用 Fork 方法的形式与使用 Clone 方法有些许差别。
Fork 方法通过传入委托方法直接增加新的映射配置:
var forked = mainConfig.Fork(config => 
				{
					config.ForType<Poco, Dto>()
						.Map(dest => dest.code, src => src.Id);
				});
var dto = poco.Adapt<Dto>(forked);
以上代码等同于使用 Clone 方法实现的以下代码:
var forked = mainConfig.Clone();
forked.ForType<Poco, Dto>()
      .Map(dest => dest.code, src => src.Id);
var dto = poco.Adapt<Dto>(forked);
目前学习.NET Core 最好的教程 .NET Core 官方教程 ASP.NET Core 官方教程
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】支持,或请我喝杯咖啡【赞赏】,这将是我继续写作,分享的最大动力!
作者:玩双截棍的熊猫
        声明:原创博客!请在转载时在文章开头注明本人博客地址。如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!
     
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号