C# TinyMapper:调用TinyMapper.Bind<;t目标,t来源>;(); 导致性能问题?应该只叫一次吗?

C# TinyMapper:调用TinyMapper.Bind<;t目标,t来源>;(); 导致性能问题?应该只叫一次吗?,c#,tinymapper,C#,Tinymapper,我有一个程序集,其中包含一个类,该类将对象从Dal实体映射到业务对象。此类映射几个不同的对象(配置文件、地址等)。我正在用TinyMapper手动替换映射。一般而言: 1.列表映射方法 public IEnumerable<TTarget> MapFromDal(IEnumerable<TSource> source){ return source.Select(MapSingleFromDal); } 在用TinyMapper替换映射代码时,我应该将Bind语

我有一个程序集,其中包含一个类,该类将对象从Dal实体映射到业务对象。此类映射几个不同的对象(配置文件、地址等)。我正在用TinyMapper手动替换映射。一般而言:

1.列表映射方法

public IEnumerable<TTarget> MapFromDal(IEnumerable<TSource> source){
    return source.Select(MapSingleFromDal);
}
在用TinyMapper替换映射代码时,我应该将Bind语句放在哪里?经常打电话贵吗? 我的第一个切入点是在MapSingleFromDal方法中插入这一行:

TinyMapper.Bind<TTarget, TSource>();
TinyMapper.Bind();
因此,每当我映射单个对象时,它都会被调用。这感觉不对,所以我想把它放在哪里。它应该在这个类的构造函数中吗?它映射了很多对象,所以我应该像这样在构造函数中堆叠调用吗

TinyMapper.Bind<T1,S1>(); 
TinyMapper.Bind<T2,S2>(); 
TinyMapper.Bind<T3,S3>(); 
TinyMapper.Bind();
TinyMapper.Bind();
TinyMapper.Bind();
当我调用
TinyMapper.Bind()时会发生什么又来了?它是否昂贵?

TinyMapper.Bind()
生成映射代码,即查找所有字段、属性,然后创建IL代码,最后使用适当的映射方法创建对象。所以,是的,它很贵

尝试只调用一次
TinyMapper.Bind
。是注册所有绑定的好地方

另一种选择:如果
目标
类型很简单,即不使用任何忽略或特殊映射。您只调用
TinyMapper.Bind()
,因此根本不需要调用
Bind
,也可以调用
Map
。在这个简单的例子中,
Map
调用
Bind
,并且只调用一次

TinyMapper.Bind<T1,S1>(); 
TinyMapper.Bind<T2,S2>(); 
TinyMapper.Bind<T3,S3>();