Чистый способ сканирования на наличие профилей автоматов из сборки - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь получить все профили 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);
       }
   });
}

Есть ли более чистый способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...