如何在 AutoMapper class 中使用 Option Pattern?

How to use Option Pattern in side AutoMapper class?

我想在 AutoMapper 中使用 Option Pattern class 但它不起作用 这是 startup.cs

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddAutoMapper(typeof(Startup));
        }

这是我的自动映射

 public class AutoMapping : Profile
    {
        private readonly IOptions<AppSettings> _appSettings;
        public AutoMapping(IOptions<AppSettings> appSettings)
        {
            this._appSettings = appSettings;
            
                CreateMap<Hotel, HotelDTO>();
                CreateMap<HotelDTO, Hotel>().ForMember(dest => dest.Id, opt => opt.AllowNull());
             
        }
    }

映射工作正常,但 IOption 给我内部服务器错误

您不应在个人资料中使用依赖项注入。而是将 IOptions 实例放在与 IMapper 实例相同的位置。然后,当您调用 Map 时,您可以在解析上下文中发送的位置使用重载。例如:

IMapper _mapper;
IOptions<AppSettings> _appSettings;

var hotel = new Hotel();
var hotelDto = _mapper.Map<HotelDTO>(hotel, ctx => {
    ctx.Items["appSettings"] = _appsettings;
})

然后你可以在你的配置文件中使用相应的重载:

CreateMap<Hotel, HotelDTO>()
    .ForMember(dest => dest.Id, opt => opt.MapFrom((src, dest, prop, ctx) => {
        return ctx.Items["appSettings"];
    }));