嵌套映射(Nested Mappings)
当映射引擎执行映射时,它可以使用各种方法之一来解析目标成员值。其中一种方法是使用另一种类型映射,其中源成员类型和目标成员类型也在映射配置中配置。这使我们不仅可以扁平化我们的源类型,还可以创建复杂的目标类型。例如,我们的源类型可能包含另一种复合类型:
public class OuterSource{ public int Value { get; set; } public InnerSource Inner { get; set; } }public class InnerSource{ public int OtherValue { get; set; } }
我们可以简单地将OuterSource.Inner.OtherValue
扁平化为一个InnerOtherValue
属性,但我们可能还想为Inner
属性创建相应的复合类型:
public class OuterDest{ public int Value { get; set; } public InnerDest Inner { get; set; } }public class InnerDest{ public int OtherValue { get; set; } }
在这种情况下,我们需要配置其他源/目标类型映射:
var config = new MapperConfiguration(cfg => { cfg.CreateMap<OuterSource, OuterDest>(); cfg.CreateMap<InnerSource, InnerDest>(); }); config.AssertConfigurationIsValid();var source = new OuterSource { Value = 5, Inner = new InnerSource {OtherValue = 15} };var mapper = config.CreateMapper();var dest = mapper.Map<OuterSource, OuterDest>(source); dest.Value.ShouldEqual(5); dest.Inner.ShouldNotBeNull(); dest.Inner.OtherValue.ShouldEqual(15);
这里有几点需要注意:
配置类型的顺序无关紧要
调用Map不需要指定任何内部类型映射,只需要指定用于传入源值的类型映射
通过扁平化和嵌套映射,我们可以创建各种类型的目标对象,以满足我们的需求。
作者:这个用户有点逗
链接:https://www.jianshu.com/p/013715d2352d
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦