1はじめに
TinyMapperは、.Netオブジェクト間マッパーです。主な利点はパフォーマンスです。
TinyMapperを使用すると、オブジェクトをオブジェクトに簡単にマッピングできます。つまり、あるオブジェクトから別のオブジェクトへのプロパティまたはフィールドを簡単にマッピングできます。
TinyMapperは、バインド操作とマッパー操作のみで簡単に使用できます。また、サポートされている構成も非常に簡単です。
TinyMapperは、.Net3.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 static TTarget Map<TTarget>(object source);
//或者
public static TTarget Map<TSource, TTarget>(TSource source, TTarget target = default(TTarget));
4、具体事例
2つのマッピングオブジェクトを作成します。
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; }
}
バインドと実行
製品から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.フィールドを指定します
価格フィールドを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は、フィールドのタイプに関係なく、デフォルトでフィールド名に基づいてマップします。つまり、ソースオブジェクトのフィールド名がターゲットオブジェクトのフィールド名と同じであるが、型に一貫性がなく、キャストできない場合、例外がスローされます。