天天看點

AutoMapper之嵌套映射

8.嵌套映射

嵌套映射就是一個類中包含有另一個類,這種情況下我們應該如何映射呢?

AutoMapper之嵌套映射
/// <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);  //測試通過
    }
}
           

嵌套映射就這麼簡單,和正常的映射一樣,隻要指定映射的源類型和目标類型即可。

示例代碼

官方位址