Глобальная конфигурация Mapster с внедрением зависимостей - PullRequest
0 голосов
/ 12 апреля 2020

Хотелось бы узнать, есть ли способ глобально настроить Mapster при использовании Dependency Injection?

Параметры конфигурации, по-видимому, предназначены для использования stati c, а также только для одноэлементного шаблона.

Конфигурация Mapster

Внедрение зависимостей Mapster

Я создал метод расширения.

// Extension method
public static IServiceCollection AddMapster(this IServiceCollection services, Action<TypeAdapterConfig> options = null)
{
    var config = new TypeAdapterConfig();
    config.Scan(Assembly.GetAssembly(typeof(Startup)));

    options?.Invoke(config);

    services.AddSingleton(config);
    services.AddScoped<IMapper, ServiceMapper>();

    return services;
}

// Called in Startup.ConfigureServices(IServiceCollection services)
services.AddMapster(options =>
{
    options.Default.IgnoreNonMapped(true); // Does not work.
    TypeAdapterConfig.GlobalSettings.Default.IgnoreNonMapped(true); // Does not work.
});

Я полагаю, они не работают, потому что ServiceMapper создает свой собственный экземпляр без использования чего-либо, что я настроил.

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете изменить с

var config = new TypeAdapterConfig();

на

var config = TypeAdapterConfig.GlobalSettings;
...