我正在尝试从程序集中获取所有自动映射器配置文件,但似乎也可以从自动映射器中获取配置文件,因为有些是从配置文件类派生的。
我有一个肮脏的骇客。我必须过滤来自自动映射器的配置文件,因为某些配置文件没有默认的构造函数,在解析期间会导致异常,例如,从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);
}
});
}
有没有更清洁的方法来解决这个问题?