具有依赖性的自定义Json转换器

时间:2016-12-29 21:21:36

标签: dependency-injection asp.net-core json.net

出于某种原因,我必须在ASP.NET Core中使用自定义JsonConverter,我需要将其与JsonInputFormatter一起使用。我找到的唯一方法是使用AddJsonOption扩展方法,如下所示:

services
  .AddMvc()
  .AddJsonOptions(jso => jso.SerializerSettings.Converters.Add(new CustomConverter()))

但它有一个缺陷:CustomConverter需要DI容器的依赖,这在配置时无法轻易解决。 所以问题是:是否有任何程序员友好的方式来提供JsonConverter依赖于ASP.NET Core JsonInputFormatter

1 个答案:

答案 0 :(得分:2)

一个快速的解决方法是将其推迟到Configure方法。

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

    ...
}

虽然感觉有点脏;)