docs/005_通用Dto间转换之Object.Mapper扩展.md

(开头部分) 20KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

# 通用Dto间转换之Object.Mapper扩展

> 所属包: DotNetCommon.Core



## 1. 简介

该功能是类比AutoMapper实现的不用类转换的功能。

它的特点如下:

- 基于编译表达式树实现;
- 能够转换没有任何关系的两个类,只要它们的属性名和属性类型相同即可(集合、数组可以);
- 转换中能够处理循环引用的情况;
- 性能和AutoMapper相近;
- 能自动处理不同数据类型之间的转换:string<=>datetime, string <=>enum string<=>guid
- 轻量,零配置;
- 忽略类之间的继承关系;



## 2. 不同类之间的简单转换

> 注意: Mapper方法是在Object上做的扩展,所以使用前先引入命名空间: DotNetCommon.Extensions



类模型:

```csharp
public class Cat
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public DateTime Birth { get; set; }
}

public class CatDto
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age
    {
        get
        {
            return DateTime.Now.Year - Birth.Year;
        }
    }
    public DateTime Birth { get; set; }
}
```



转换示例:

```csharp
var cat = new Cat()
后面还有 763 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。