初期化では、すべてのマップ作成が1回実行されるため、マッピングを実行するときに実行されます。いつでもマップを作成できますが、マッピングの作成にはリフレクションが含まれるため、コードの速度が低下します。
マッピングコードにプロファイルを使用し、次のようなものを使用してこれをすべてセットアップするのが最善だと思います。
public class AutoMapperConfiguration : IRequiresConfigurationOnStartUp
{
private readonly IContainer _container;
public AutoMapperConfiguration(IContainer container)
{
_container = container;
}
public void Configure()
{
Mapper.Initialize(x => GetAutoMapperConfiguration(Mapper.Configuration));
}
private void GetAutoMapperConfiguration(IConfiguration configuration)
{
var profiles = GetProfiles();
foreach (var profile in profiles)
{
configuration.AddProfile(_container.GetInstance(profile) as Profile);
}
}
private static IEnumerable<Type> GetProfiles()
{
return typeof(AutoMapperConfiguration).Assembly.GetTypes()
.Where(type => !type.IsAbstract && typeof(Profile).IsAssignableFrom(type));
}
}