Dependency injection 带有dependecy的自定义Json转换器

Dependency injection 带有dependecy的自定义Json转换器,dependency-injection,asp.net-core,json.net,Dependency Injection,Asp.net Core,Json.net,出于某种原因,我必须将自定义的JsonConverter与ASP.NET核心一起使用,并且我需要将它与JsonInputFormatter一起使用。我发现的唯一方法是使用AddJsonOption扩展方法,如下所示: services .AddMvc() .AddJsonOptions(jso => jso.SerializerSettings.Converters.Add(new CustomConverter())) 但是它有一个缺陷:CustomConverter需要来自D

出于某种原因,我必须将自定义的
JsonConverter
与ASP.NET核心一起使用,并且我需要将它与
JsonInputFormatter
一起使用。我发现的唯一方法是使用
AddJsonOption
扩展方法,如下所示:

services
  .AddMvc()
  .AddJsonOptions(jso => jso.SerializerSettings.Converters.Add(new CustomConverter()))
但是它有一个缺陷:
CustomConverter
需要来自DI容器的依赖关系,这在配置时很难解决。
所以问题是:是否有任何程序员友好的方法来提供一个依赖于ASP.NET核心的
JsonInputFormatter
JsonConverter

一个快速的解决方法是将其推迟到
配置
方法

public Confiugre(IAppBuilder app, IOptions<MvcOptions> mvcOptions, IOptions<MvcJsonOptions> jsonOptions) 
{
    var formatter = mvcOptions.InputFormatters.OfType<JsonInputFormatter>().Single();
    jsonOptions.SerializerSettings.Converters.Add(
        new CustomConverter(formatter));

    ...
}
public configure(IAppBuilder应用程序、IOptions MVCOPIONS、IOptions jsonOptions)
{
var formatter=mvcopions.InputFormatters.OfType().Single();
jsonOptions.SerializerSettings.Converters.Add(
新的自定义转换器(格式化程序);
...
}
不过还是觉得有点脏;)