AutoMapper遇到的坑
AutoMapper在加载配置文件时,在startup是这样写的 。
services.AddAutoMapper(typeof(VModels.VModelMapperProfile)); services.AddAutoMapper(typeof(UserMapperProfile));
单个文件没有问题,但是有多个profile文件要加载就有问题了,始终只有第一个加载成功。
估计是判断已经调用过了就不在调用吧也就是AddAutoMapper只能调用一次(不知道对不对),没有去深究其背后实现的逻辑先记录一下。
所有有多个文件要加载的时候这样写就没问题。
public static class AutoMapperExtension { public static void AddAutoMapperProfile(this IServiceCollection services, string regexSearchPattern) { if(string.IsNullOrWhiteSpace(regexSearchPattern) || regexSearchPattern == "*") { services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); } else { System.Text.RegularExpressions.Regex reg=new System.Text.RegularExpressions.Regex(regexSearchPattern); var assemblies=AppDomain.CurrentDomain.GetAssemblies(); ListlstAssembly=new List (); foreach(var ass in assemblies) { if(reg.IsMatch(ass.GetName().Name)) { lstAssembly.Add(ass); } } services.AddAutoMapper(lstAssembly); } } }