1、介绍
TinyMapper是.Net的对象到对象映射器。主要优点是性能。
TinyMapper允许轻松地将对象映射到对象,即从一个对象到另一个对象的属性或字段。
TinyMapper使用简单,只有Bind,Mapper两个操作;而且支持的配置也很简单。
TinyMapper支持.Net 3.0以上的版本
2、网址
3、使用
3.1、安装
通过控制台
PM> Install-Package TinyMapper
或者
3.2、使用步骤
1、绑定映射关系
public static void Bind<TSource, TTarget>();
//或者
public static void Bind<TSource, TTarget>(Action<IBindingConfig<TSource, TTarget>> config);
2、执行映射
注意:TinyMapper的映射对象必须是Public类型。
public static TTarget Map<TTarget>(object source);
//或者
public static TTarget Map<TSource, TTarget>(TSource source, TTarget target = default(TTarget));
4、具体事例
创建两个映射对象:
public class Product
{
public Guid Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
public class ProductDTO
{
public Guid Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
绑定与执行
从product 转ProductDTO
var product = new Product()
{
Id = Guid.NewGuid(),
Name = "Product" + DateTime.Now.Ticks,
Price = 12
};
//1. 创建映射关系
TinyMapper.Bind<Product, ProductDTO>();
//2. 执行映射
var productDto = TinyMapper.Map<ProductDTO>(product);
5、集合映射
var products = new List<Product>()
{
new Product()
{
Id = Guid.NewGuid(),
Name = "Product" + DateTime.Now.Ticks,
Price = 5
},
new Product()
{
Id = Guid.NewGuid(),
Name = "Product" + DateTime.Now.Ticks,
Price = 10
}
};
//1. 创建映射关系
TinyMapper.Bind<List<Product>, List<ProductDTO>>();
//2. 执行映射
var productDtos = TinyMapper.Map<List<Product>>(products);
执行映射转换时,TinyMapper不支持接口类型:IList, ICollection, IEnumerable。
6、指定字段
将Price字段给Money
//1. 创建映射关系
TinyMapper.Bind<Product, ProductDTO>(cfg =>
{
cfg.Bind(src => src.Price, dest => dest.Money); //指定字段映射
});
//2. 执行映射
var productDto = TinyMapper.Map<ProductDTO>(product);
7、忽略指定字段
TinyMapper.Bind<Product, ProductDTO>(cfg =>
{
cfg.Ignore(src => src.Price); //映射时不管某些字段
});
注意:TinyMapper默认会根据字段名称进行映射,而不管字段的类型。也就是说,如果源对象字段名称与目标对象字段名称一致,但是类型不一致且不能进行强制转换时,会抛出异常。