C# Automapper-将InnerDestination映射到OuterSource
我遵循了Automapper Wiki中的嵌套示例,但扩展它时遇到了一些问题。在下面的代码中,我试图将InnerDest2映射到OuterSource。具体来说,我希望InnerDest2.Value填充OuterSource.Value,但当我运行时,InnerDest2返回为null。我肯定我遗漏了一些简单的东西,但我就是想不出来 有什么想法吗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
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中“自动”拾取这些值。