Я пытаюсь получить все профили autopper из сборки, но, похоже, даже те, которые получены из automapper, поскольку некоторые из них получены из класса профиля.
У меня есть хак, который кажется грязным.Я должен отфильтровать профили, полученные из automapper, так как некоторые не имеют конструктора по умолчанию, вызывающего исключения во время разрешения, например, закрытый класс NamedProfile, производный от Profile
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);
}
});
}
Есть ли более чистый способ сделать это?