using AutoMapper;

namespace IRaCIS.Application.AutoMapper
{
    public class AutoMapperConfig
    {
        public static void Config()
        {
            //Mapper.Initialize(cfg =>
            //{
            //    cfg.AddProfile<DomainToViewModelMappingProfile>();
            //    cfg.AddProfile(new ViewModelToDomainMappingProfile());
            //    cfg.AddProfile(new LogicChangeMappingProfile());
            //    cfg.ForAllMaps((a, b) => b.ForAllMembers(opt => opt.Condition((src, dest, sourceMember) => sourceMember != null)));
            //});
        }

        public static MapperConfiguration RegisterMappings()
        {
            //创建AutoMapperConfiguration, 提供静态方法Configure,一次加载所有层中Profile定义 
            //MapperConfiguration实例可以静态存储在一个静态字段中,也可以存储在一个依赖注入容器中。 一旦创建,不能更改/修改。

            return new MapperConfiguration(cfg =>
            {
                cfg.AddProfile<DomainToViewModelMappingProfile>();
                cfg.AddProfile(new ViewModelToDomainMappingProfile());
                cfg.AddProfile(new LogicChangeMappingProfile());
                cfg.ForAllMaps((a, b) => b.ForAllMembers(opt => opt.Condition((src, dest, sourceMember) => sourceMember != null)));
            });
        }
    }
}