AutoMapper и CA1506: избегайте чрезмерного сцепления классов - PullRequest
0 голосов
/ 12 июня 2019

В проекте .NET Core 2.2 мы используем AutoMapper.В методе ConfigureService файла запуска, где мы регистрируем все, мы вызываем:

services.AddAutoMapper(typeof(ModelMaps));

Класс ModelMaps - это место, где мы делаем все вызовы CreateMap(), чтобы поместить все наши сопоставления модели в одно место.В нем много отображений, подобных этим:

CreateMap<WarehouseModel, Warehouse>().ReverseMap();

CreateMap<Import, ImportModel>()
    .ForMember(
        m => m.StatusDescription, opt => opt.MapFrom(
            o => EnumUtility.GetDescriptionFromEnum(o.StatusId)));

После того, как мы начали использовать 100 различных типов, мы начали получать эту ошибку:

Ошибка CA1506: 'ModelMaps' связанс '100' разными типами из '8' разных пространств имен.Перепишите или реорганизуйте код, чтобы уменьшить его связь классов ниже «96».(8, 18)

Я знаю, почему связывание классов - плохая идея, но как насчет этого экземпляра?Есть ли лучший способ для нас, чтобы зарегистрировать эти карты?Это действительно даже проблема?Должны ли мы просто подавить этот экземпляр ошибки и двигаться дальше?

...