C# Automapper-将InnerDestination映射到OuterSource

C# Automapper-将InnerDestination映射到OuterSource,c#,automapper,C#,Automapper,我遵循了Automapper Wiki中的嵌套示例,但扩展它时遇到了一些问题。在下面的代码中,我试图将InnerDest2映射到OuterSource。具体来说,我希望InnerDest2.Value填充OuterSource.Value,但当我运行时,InnerDest2返回为null。我肯定我遗漏了一些简单的东西,但我就是想不出来 有什么想法吗 namespace AutomapNestTest { class Program { static void Ma

我遵循了Automapper Wiki中的嵌套示例,但扩展它时遇到了一些问题。在下面的代码中,我试图将InnerDest2映射到OuterSource。具体来说,我希望InnerDest2.Value填充OuterSource.Value,但当我运行时,InnerDest2返回为null。我肯定我遗漏了一些简单的东西,但我就是想不出来

有什么想法吗

namespace AutomapNestTest
{
    class Program
    {
        static void Main(string[] args)
        {
            ConfigureAutomapper();
            var source = new OuterSource
            {
                Value = 5,
                Inner = new InnerSource { OtherValue = 15 },
            };
            var dest = new OuterDest();

            AutoMapper.Mapper.Map(source, dest);
        }

        private static void ConfigureAutomapper()
        {
            AutoMapper.Mapper.Initialize(cfg =>
            {
                cfg.CreateMap<OuterSource, OuterDest>();
                cfg.CreateMap<InnerSource, InnerDest>();
                cfg.CreateMap<OuterSource, InnerDest2>();
            });
        }
    }

    public class OuterSource
    {
        public int Value { get; set; }
        public InnerSource Inner { get; set; }
    }

    public class InnerSource
    {
        public int OtherValue { get; set; }
    }

    public class OuterDest
    {
        public int Value { get; set; }
        public InnerDest Inner { get; set; }
        public InnerDest2 Inner3 { get; set; }
    }

    public class InnerDest
    {
        public int OtherValue { get; set; }
    }
    public class InnerDest2
    {
        public int Value { get; set; }
    }
}
namespace自动pnesttest
{
班级计划
{
静态void Main(字符串[]参数)
{
ConfigureAutomapper();
var source=新的外部源
{
值=5,
内部=新的内部源{OtherValue=15},
};
var dest=新的最外层();
AutoMapper.Mapper.Map(源、目标);
}
私有静态void ConfigureAutomapper()
{
AutoMapper.Mapper.Initialize(cfg=>
{
CreateMap();
CreateMap();
CreateMap();
});
}
}
公共类外部源
{
公共int值{get;set;}
公共InnerSource内部{get;set;}
}
公共类内部源
{
public int OtherValue{get;set;}
}
公共类最外层
{
公共int值{get;set;}
公共InnerDest内部{get;set;}
公共InnerDest2 Inner3{get;set;}
}
最底层的公共类
{
public int OtherValue{get;set;}
}
公共类最内层2
{
公共int值{get;set;}
}
}

您正在将
OuterSource
对象映射到
OuterDesc
对象。有一个从
OuterSource
InnerDest2
的映射配置,但是
OuterSource
本身中没有类型为
OuterSource
的属性,因此
OuterDest
中的属性
Inner3
无法从任何对象映射

如果需要将
source.Value
映射到
dest.Inner3.Value
,则必须显式地执行另一个映射。首先声明变量:

var innerDest2 = new InnerDest2();
之后,进行映射并设置
dest.Inner3

AutoMapper.Mapper.Map(source, innerDest2);
dest.Inner3 = innerDest2;

成功了!谢谢我想我认为,因为OuterSource和InnerDest2都有值属性,所以它只会在第三个CreateMap中“自动”拾取这些值。