带有依赖项注入的Mapster全局配置



我想知道是否有一种方法可以在使用依赖注入的同时全局配置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正在创建自己的实例,而没有使用我配置的任何东西。

我在Blazor Server应用程序中实现了Mapster,我很难找到关于如何扫描程序集以查找映射注册的文档。

我的应用程序中有一个类,它实现了IRegister接口并定义了映射

public class MappingRegistration : IRegister
{
void IRegister.Register(TypeAdapterConfig config)
{
config.NewConfig<ModelA, ModelB>();
}
}

Startup.csConfigureServices中,我有这个然后

var typeAdapterConfig = TypeAdapterConfig.GlobalSettings;
// scans the assembly and gets the IRegister, adding the registration to the TypeAdapterConfig
typeAdapterConfig.Scan(Assembly.GetExecutingAssembly());
// register the mapper as Singleton service for my application
var mapperConfig = new Mapper(typeAdapterConfig);
services.AddSingleton<IMapper>(mapperConfig);

我希望这能节省别人的时间。如果有人知道更好的方法,请告诉我。

您可以从更改

var config = new TypeAdapterConfig();

var config = TypeAdapterConfig.GlobalSettings;

相关内容

  • 没有找到相关文章

最新更新