一种从程序集中扫描自动映射器配置文件的干净方法

时间:2019-02-09 12:52:18

标签: c# automapper

我正在尝试从程序集中获取所有自动映射器配置文件,但似乎也可以从自动映射器中获取配置文件,因为有些是从配置文件类派生的。

我有一个肮脏的骇客。我必须过滤来自自动映射器的配置文件,因为某些配置文件没有默认的构造函数,在解析期间会导致异常,例如,从Profile派生的私有类NamedProfile

public AutomapperTypeAdapterFactory()
{
    //scan all assemblies finding Automapper Profile
    var profiles = AppDomain.CurrentDomain
                            .GetAssemblies()
                            .SelectMany(a => a.GetTypes())
                            .Where(t => t.BaseType == typeof(Profile));

    Mapper.Initialize(cfg =>
    {
        foreach (var item in profiles)
        {
            if (item.FullName != null && !item.FullName.StartsWith("AutoMapper")) // HACK: Removes classes that derive from profile in automapper
                    cfg.AddProfile(Activator.CreateInstance(item) as Profile);
       }
   });
}

有没有更清洁的方法来解决这个问题?

0 个答案:

没有答案