具有依赖注入的 Mapster 全局配置
Mapster Global Configuration with Dependency Injection
我想知道在使用依赖注入时是否有全局配置 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
正在创建自己的实例,但没有使用我配置的任何东西。
您可以从
var config = new TypeAdapterConfig();
至
var config = TypeAdapterConfig.GlobalSettings;
我在 Blazor Server 应用程序中实现了 Mapster
,但我努力寻找有关如何扫描程序集以进行映射注册的文档。
我的应用程序中有一个 class 实现了 IRegister
接口并定义了映射
public class MappingRegistration : IRegister
{
void IRegister.Register(TypeAdapterConfig config)
{
config.NewConfig<ModelA, ModelB>();
}
}
在 Startup.cs
的 ConfigureServices
我有这个
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);
我希望这可以节省一些人的时间。如果有人知道更好的方法,请告诉我。
我想知道在使用依赖注入时是否有全局配置 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
正在创建自己的实例,但没有使用我配置的任何东西。
您可以从
var config = new TypeAdapterConfig();
至
var config = TypeAdapterConfig.GlobalSettings;
我在 Blazor Server 应用程序中实现了 Mapster
,但我努力寻找有关如何扫描程序集以进行映射注册的文档。
我的应用程序中有一个 class 实现了 IRegister
接口并定义了映射
public class MappingRegistration : IRegister
{
void IRegister.Register(TypeAdapterConfig config)
{
config.NewConfig<ModelA, ModelB>();
}
}
在 Startup.cs
的 ConfigureServices
我有这个
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);
我希望这可以节省一些人的时间。如果有人知道更好的方法,请告诉我。