AutoMapper之嵌套映射

8.嵌套映射

嵌套映射就是一个类中包含有另一个类,这种情况下我们应该如何映射呢?

/// <summary>
/// 源对象
/// </summary>
public class OuterSource
{
    public int Value { get; set; }
    public InnerSource Inner { get; set; }
}
/// <summary>
/// 源嵌套对象
/// </summary>
public class InnerSource
{
    public int OtherValue { get; set; }
}

/// <summary>
/// 目标对象
/// </summary>
public class OuterDest
{
    public int Value { get; set; }
    public InnerDest Inner { get; set; }
}
/// <summary>
/// 目标嵌套对象
/// </summary>
public class InnerDest
{
    public int OtherValue { get; set; }
}

/// <summary>
/// 嵌套映射测试类型
/// </summary>
[TestClass]
public class NestedMapping
{      

    [TestMethod]
    public void NestedMappingTest()
    {
        //初始化
        Mapper.Initialize(cfg => {
            //指定外部类映射
            cfg.CreateMap<OuterSource, OuterDest>();
	        //指定内部类映射
            cfg.CreateMap<InnerSource, InnerDest>();
        });
        var src = new OuterSource
        {
            Value = 1,
            Inner = new InnerSource { OtherValue =2}
        };
        OuterDest dest = Mapper.Map<OuterSource, OuterDest>(src);

        //验证结果
        Assert.AreEqual(1, dest.Value); //测试通过
        Assert.IsNotNull(dest.Inner);  //测试通过
        Assert.AreEqual(2, dest.Inner.OtherValue);  //测试通过
    }
}

嵌套映射就这么简单,和正常的映射一样,只要指定映射的源类型和目标类型即可。

示例代码

官方地址

posted @   山中自有人  阅读(3570)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示