您的位置:首页 > 移动开发

AutoMapper官方文档(十)【嵌套映射】

2017-11-28 14:03 239 查看
在映射引擎执行映射时,可以使用多种方法之一来解析目标成员值。 其中一种方法是使用另一种类型映射,其中在映射配置中还配置了源成员类型和目标成员类型。 这使我们不仅可以平坦化我们的源类型,还可以创建复杂的目标类型。 例如,我们的源类型可能包含另一个复杂类型:

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


这里需要注意一些事情:

配置类型的顺序并不重要
调用映射不需要指定任何内部类型映射,只需要为传入的源值使用类型映射


凭借简化和嵌套映射,我们可以创建各种目标形状,以满足我们的任何需求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: