Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有递归映射的ThisMember复合对象_C#_Datamapper - Fatal编程技术网

C# 具有递归映射的ThisMember复合对象

C# 具有递归映射的ThisMember复合对象,c#,datamapper,C#,Datamapper,我有一个问题,我有一个目标: public class Category { public long Id { get; set; } public string Title { get; set; } public int MaxDepth { get; set; } public virtual Category Parent { get; set; } public virtual IList<Category> ChildrenNod

我有一个问题,我有一个目标:

public class Category {
    public long Id { get; set; }
    public string Title { get; set; }
    public int MaxDepth { get; set; }

    public virtual Category Parent { get; set; }
    public virtual IList<Category> ChildrenNodes { get; set; }
}
我正在使用这里是它的参考资料

顺便说一句,感谢朱利安的伟大工具。

我将它与我编写的这个扩展方法一起使用

 public static TOut Map<TIn, TOut>(this TIn source)
        where TIn : class
        where TOut : new() {
        return Mapper.Map<TIn, TOut>(source);
 }
publicstatictout地图(此TIn源)
在哪里上课
wheretout:new(){
返回Mapper.Map(源);
}
现在的问题是:

如何用递归映射复合对象? 我还没有在朱利安的例子中找到答案

任何帮助都将不胜感激

您可以建议其他映射器,但它必须是
ThisMember
speed等效或更快


提前感谢。

这应该很容易:

var catDTO = new CategoryDTO {
  Title = "Parent",
  ChildrenNodes = new List<CategoryDTO> { new CategoryDTO { Title = "Child" }}
};            

var mapper = new MemberMapper();
mapper.CreateMap<CategoryDTO, Category>(category => new Category {
  ChildrenNodes = 
    category.ChildrenNodes == null ? null :
      category.ChildrenNodes.Select(c => mapper.Map<CategoryDTO, Category>(c)).ToList()
});

var mappedCategory = mapper.Map<CategoryDTO, Category>(catDTO);
var catDTO=new CategoryDTO{
Title=“家长”,
ChildrenNodes=新列表{new CategoryDTO{Title=“Child”}
};            
var mapper=newmembermapper();
CreateMap(类别=>新类别{
子节点=
category.ChildrenNodes==null?null:
category.ChildrenNodes.Select(c=>mapper.Map(c)).ToList()
});
var mappedCategory=mapper.Map(catDTO);
var catDTO = new CategoryDTO {
  Title = "Parent",
  ChildrenNodes = new List<CategoryDTO> { new CategoryDTO { Title = "Child" }}
};            

var mapper = new MemberMapper();
mapper.CreateMap<CategoryDTO, Category>(category => new Category {
  ChildrenNodes = 
    category.ChildrenNodes == null ? null :
      category.ChildrenNodes.Select(c => mapper.Map<CategoryDTO, Category>(c)).ToList()
});

var mappedCategory = mapper.Map<CategoryDTO, Category>(catDTO);