Mapster在线云测试工具对象映射库

Mapster在线云测试工具对象映射库

Mapster 是一个开源的.NET 对象映射库,它提供了一种简单而强大的方式来处理对象之间的映射。

 
以下是 Mapster 的一些主要特点和使用方法:
 
**安装**:可以通过 NuGet 包管理器控制台使用以下命令安装 Mapster:`Install-Package Mapster` 或者使用.NET Core CLI 命令:`dotnet add package Mapster`
 
**基本用法**:
1. 映射到新对象:Mapster 创建目标对象并将值映射到该对象。
```csharp
var destObject = sourceObject.adapt<Destination>();
```
2. 映射到现有对象:先创建对象,然后 Mapster 会将源对象映射到该对象。
```csharp
sourceObject.adapt(destObject);
```
 
**可查询扩展**:Mapster 提供了映射可查询对象(IQueryable)的扩展。例如,使用 Entity Framework 时,可以减少手动编写 select 操作。
```csharp
using (myDbContext context = new myDbContext())
{
// 使用 Mapster 提供的 ProjectToType 扩展方法
var destinations = context.Sources.ProjectToType<Destination>().ToList();
// 相对于手工操作
var destinations = context.Sources.Select(c => new Destination
{
Id = c.Id,
Name = c.Name,
Surname = c.Surname,
....
}).ToList();
}
```
 
**配置(TypeAdapterConfig)**:
可以直接使用 Mapster 内置的全局静态配置 `TypeAdapterConfig.GlobalSettings`,也可以实例化一个配置 `new TypeAdapterConfig()`。默认情况下,Mapster 会根据两个实体字段名称相同进行匹配。如果需要更复杂的映射规则,可以进行如下配置:
1. 直接在配置对象中设置映射关系:
```csharp
var config = new TypeAdapterConfig();
config.ForType<User, UserDto>()
.Map(dest => dest.UserAge, src => src.Age)
.Map(dest => dest.UserSex, src => src.Sex);
var mapper = new Mapper(config);
```
2. 使用接口的方式(需要实现 `IRegister`):
```csharp
public class UserDtoRegister : IRegister
{
public void Register(TypeAdapterConfig config)
{
config.ForType<User, UserDto>()
.Map(dest => dest.UserAge, src => src.Age);
//...
}
}
// 实例化 Mapper
var config = new TypeAdapterConfig();
// 只有要给定 IRegister 所在的程序集名称,Mapster 会自动识别 IRegister,进行配置注入。
config.Scan("程序集名称 1","程序集名称 2");
var mapper = new Mapper(config);
```
 
**忽略字段**:可以通过以下方式忽略某些字段的映射。
```csharp
var config = new TypeAdapterConfig();
config.ForType<User, UserDto>()
.Map(dest => dest.UserAge, src => src.Age)
.Map(dest => dest.UserSex, src => src.Sex)
.IgnoreNullValues(true) // 忽略空值映射
.Ignore(dest => dest.UserAge) // 忽略指定字段
.IgnoreAttribute(typeof(DataMemberAttribute)) // 忽略指定特性的字段
.NameMatchingStrategy(NameMatchingStrategy.IgnoreCase) // 忽略字段名称的大小写
.IgnoreNonMapped(true); // 忽略除以上配置的所有字段
config.ForType<User, UserDto>()
.IgnoreMember((member, side) =>!member.Type.Namespace.StartsWith("System")); // 实现更细致的忽略规则
```
 
与其他对象映射库相比,Mapster 在性能和内存使用上表现较为出色。它旨在提高速度和内存效率,在一些测试中,可以获得 4 倍的性能提升,同时只使用约 1/3 的内存。
 
如果你需要在.NET 项目中进行对象映射,Mapster 是一个值得考虑的选择。你可以根据项目的具体需求,利用其提供的功能来简化和优化对象之间的映射工作。更多详细信息和用法可以参考 Mapster 的官方文档:https://github.com/MapsterMapper/Mapster/wiki
以上就是今天所分享的内容了,更多关于软件知识请关注火资源软件,每天都会更新一些优质内容,其中包括红包软件有微信,钉钉,支付宝,陌陌,QQ,星星优选,小鸡易语,福瑞祥,火鸟XM,欣语,思语,close,微友趣,云集购物,云货淘,慎语,云鹿,顺胜,安信,伊蓝贝,频道chat,爱果go,火箭通讯,微信多开,微信分身,牛牛,红包透视,秒抢,单透软件,机器人,埋雷软件,红包尾数控制,爆粉,红包辅助,埋雷辅助,辅助外挂等一些红包强项外挂辅助软件功能免费下载使用。
版权声明:admin 发表于 2024-08-14 11:00:18。
转载请注明:Mapster在线云测试工具对象映射库 | 火资源软件