public virtual IMapper BuildMapper()
{
if (mapper != null)
{
// log
Settings.InfoLog.Invoke("MapperBuilder.BuildMapper() invoked more than once. Returning cached instance! Make sure you do not call this method multiple times.");
}
else
{
var mapperLocal = new Mapper(Settings.MappingStrategyBuilder = Settings.MappingStrategyBuilder ?? BuildMappingStrategyBuilder(),
Settings.MappingCompiler = Settings.MappingCompiler ?? BuildMappingCompiler(),
BuildTypeMatchers(Settings.TypeMatchers));
var mappings = new List<MappingInfo>();
var bag = new MappingBag(mappings);
foreach (var catalog in catalogs)
{
catalog.Collect(bag);
}
mappings.Sort();
foreach (var mapping in mappings)
{
mapperLocal.RegisterMapping(mapping);
}
mapper = mapperLocal;
}
return mapper;
}