下面是一个Asp Core中使用树结构映射的示例代码:
首先,定义一个树节点的数据模型:
public class TreeNode
{
public int Id { get; set; }
public string Name { get; set; }
public List Children { get; set; } = new List();
}
然后,创建一个树结构的映射器类,用于将树节点数据模型映射到DTO(数据传输对象):
public class TreeMapper
{
public static TreeDto Map(TreeNode node)
{
var dto = new TreeDto
{
Id = node.Id,
Name = node.Name,
Children = node.Children.Select(Map).ToList()
};
return dto;
}
}
接下来,创建DTO(数据传输对象)来表示映射后的树节点:
public class TreeDto
{
public int Id { get; set; }
public string Name { get; set; }
public List Children { get; set; }
}
最后,在Controller中使用映射器类将树节点映射为DTO:
[ApiController]
[Route("api/tree")]
public class TreeController : ControllerBase
{
[HttpGet]
public ActionResult GetTree()
{
// 模拟一个树结构
var root = new TreeNode
{
Id = 1,
Name = "Root",
Children = new List
{
new TreeNode
{
Id = 2,
Name = "Child 1",
Children = new List
{
new TreeNode { Id = 3, Name = "Grandchild 1" },
new TreeNode { Id = 4, Name = "Grandchild 2" }
}
},
new TreeNode { Id = 5, Name = "Child 2" }
}
};
// 使用映射器将树节点映射为DTO
var dto = TreeMapper.Map(root);
return dto;
}
}
这样,当调用GET /api/tree
接口时,将返回一个树结构的DTO对象,例如:
{
"id": 1,
"name": "Root",
"children": [
{
"id": 2,
"name": "Child 1",
"children": [
{
"id": 3,
"name": "Grandchild 1",
"children": []
},
{
"id": 4,
"name": "Grandchild 2",
"children": []
}
]
},
{
"id": 5,
"name": "Child 2",
"children": []
}
]
}
这就是使用Asp Core中树结构映射的一个示例。