gpt4 book ai didi

c# - 如何在 ASP.NET Core 中使用支持依赖注入(inject)的自定义模型联编程序?

转载 作者:太空狗 更新时间:2023-10-29 23:29:32 31 4
gpt4 key购买 nike

我正在尝试在 MVC 中使用自定义模型绑定(bind)器,我想从我的 IoC 容器中解析它。我遇到的问题是我在添加 MVC 服务时无法访问我的容器,因为我的容器尚未构建(我需要在构建我的容器之前添加 MVC)。感觉像是先有鸡还是先有蛋的问题,我确信我缺少一个简单的解决方案。

例子:

services.AddMvc().AddMvcOptions(options =>
{
options.ModelBinders.Add(serviceProvider.Resolve<CustomModelBinder>());
});

我的自定义模型 Binder 如下所示:

public class CustomModelBinder : IModelBinder
{
private IServiceProvider serviceProvider;

public CustomModelBinder(IServiceProvider serviceProvider)
{
this.serviceProvider = serviceProvider;
}

public Task<ModelBindingResult> BindModelAsync(ModelBindingContext bindingContext)
{
var model = serviceProvider.GetService(bindingContext.ModelType);
bindingContext.Model = model;

var binder = new GenericModelBinder();
return binder.BindModelAsync(bindingContext);
}
}

最佳答案

根据此处的帖子:https://github.com/aspnet/Mvc/issues/4167

要直接回答您的问题,请使用:

bindingContext.OperationBindingContext.ActionContext.HttpContext.RequestServices

附带说明一下,您还可以选择使用 [FromServices] 为您解决问题。

关于c# - 如何在 ASP.NET Core 中使用支持依赖注入(inject)的自定义模型联编程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35640858/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com