我有一个简单的映射,它可以工作,但是它没有填充Output.Details。
我有点困惑,我认为这可能是因为我为每个源都使用了“任务”。
Mapper.CreateMap<Task, Output>();
Mapper.CreateMap<Task, Output.Details>().ForMember(
dest => dest.Item, opt => opt.MapFrom(src => src.Name));
据我所知,我需要创建两个地图,一个用于对象,另一个用于包含其中的对象。
问题是输出和输出详细信息的来源可以在任务中找到。
我尝试深入第一个地图中的详细信息,并指定Mapfrom,但它会出现以下错误,这就是为什么我必须创建两个地图的原因。
must resolve to top-level member. Parameter name: lambdaExpression error
IList<Task> tempItems= GetItems();
IList<Output> items =
Mapper.Map<IList<Task>, IList<Output>>(tempItems);
地图可以使用,但是我的属性“Item”在Output.Details中不可用,即为NULL。
我做错了什么?这是我的目标对象。
它可以填写名称,但是DETAILS内部没有任何内容...它们都为空。
Task不是我的类,但我已经检查过了,所有值都可以被复制,因此Tag具有值并且是一个字符串。
public class Output
{
public string Name { get; set; }
public Details Summary { get; private set; }
public class Details
{
public string Item{ get; set; }
}
public Output()
{
Summary = new Details();
}
}
编辑
这里是Task类的一个示例。
编辑
这里有一个示例vs 2010项目,它清楚地显示了问题。
http://dl.dropbox.com/u/20103903/AutomapperNotWorking.zip
这里是一个显示问题的图像,您可以看到Summary Item为“NULL”,但它应该包含Task的名称。