, , IConfigureOptions . , .
, ICustomService:
class CustomModelBinder : IModelBinder
{
private readonly ICustomService customService;
public CustomModelBinder(ICustomService customService) => this.customService = customService;
public Task BindModelAsync(ModelBindingContext bindingContext)
{
}
}
:
class CustomModelBinderProvider : IModelBinderProvider
{
private readonly ICustomService customService;
public CustomModelBinderProvider(ICustomService customService) => this.customService = customService;
public IModelBinder GetBinder(ModelBinderProviderContext context)
{
return new CustomModelBinder(customService);
}
}
Startup :
services.AddMvc().AddMvcOptions(options =>
{
options.ModelBinderProviders.Add(new CustomModelBinderProvider(customService));
});
, , . customService . IConfigureOptions , :
class CustomModelBinderConfigureMvcOptions : IConfigureOptions<MvcOptions>
{
private readonly ICustomService customService;
public CustomModelBinderConfigureMvcOptions(ICustomService customService) => this.customService = customService;
public void Configure(MvcOptions options)
=> options.ModelBinderProviders.Add(new CustomModelBinderProvider(customService));
}
Startup
services.AddSingleton<IConfigureOptions<MvcOptions>, CustomModelBinderConfigureMvcOptions>();
.