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();
                List lstAssembly=new List();
                foreach(var ass in assemblies) {

                    if(reg.IsMatch(ass.GetName().Name)) {
                        lstAssembly.Add(ass);
                    }
                }
                services.AddAutoMapper(lstAssembly);
            }

        }

    }

相关