[非專業翻譯] Mapster - 配置實例


[非專業翻譯] Mapster - 配置實例

系列介紹

[非專業翻譯] 是對沒有中文文檔進行翻譯的系列博客,文章由機翻和譯者自己理解構成,和原文相比有所有不同,但意思基本一致。

因個人能力有限,如有謬誤之處還請指正,多多包涵。

正文

本文將說明 Mapster 中的 配置實例

配置實例

在 Mapster 中,默認的配置實例為 TypeAdapterConfig.GlobalSettings ,如果需要在不同場景下有不同的映射配置,Mapster 提供了 TypeAdapterConfig 用於實現此需求:

var config = new TypeAdapterConfig();
config.Default.Ignore("Id");

如何給 配置實例 添加l類型映射配置?

直接使用 NewConfigForType 方法即可:

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);

也可以創建一個指定 TypeAdapterConfigMapper,使用 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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM