概述

JeremyJone ... 2022-9-9 大约 2 分钟

# 概述

对象映射是将一个对象通过一定规则转换成另一个对象的方法。它非常有用,通过对象映射可以将底层原始数据对象隐藏,转成面向用户的对象,从而实现数据对象的分层管理。

举个例子,一个用户对象,它有如下属性:

public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string Nickname { get; set; }
    public string Password { get; set; }
    public string Email { get; set; }
}
1
2
3
4
5
6
7
8

现在我们需要查询用户基本信息,当我们没有对象映射的时候,每次都需要将整个对象内容返回,但是其中包含了敏感信息,所以我们需要新建一个对象,并重新赋值,比如:

public class UserDto
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string Nickname { get; set; }
}

var userDto = new UserDto
{
    Id = user.Id,
    Username = user.Username,
    Nickname = user.Nickname
}
1
2
3
4
5
6
7
8
9
10
11
12
13

DTO 是什么

DTO:Data Transfer Object,数据传输对象。用于在不同层之间进行数据交互的对象。

这样的方式就是最对象映射。比如现在我们需要一个查询用户邮箱的对象,还要重新新建一个对象,然后使用时依次赋值:

public class UserEmailDto
{
    public string Username { get; set; }
    public string Email { get; set; }
}

var userEmailDto = new UserEmailDto
{
    Username = user.Username,
    Email = user.Email
}
1
2
3
4
5
6
7
8
9
10
11

这样就映射了一个新的查询用户邮箱的对象。

这样做,一次两次还可以,但一个项目有很多对象,每个对象可能会有不同使用情况,于是就有了更多的 DTO,每一个都这样做的话就很麻烦,但是很必要,因为它提供了一种对象分离的思路。

为了避免这样大量重复的工作,所以就有了对象映射器这种工具。它的好处在于避免了大量重复工作,让我们只需要关注当前对象即可,做到了一次配置,终身受益。