出于某种原因,我必须在ASP.NET Core中使用自定义JsonConverter
,我需要将其与JsonInputFormatter
一起使用。我找到的唯一方法是使用AddJsonOption
扩展方法,如下所示:
services
.AddMvc()
.AddJsonOptions(jso => jso.SerializerSettings.Converters.Add(new CustomConverter()))
但它有一个缺陷:CustomConverter
需要DI容器的依赖,这在配置时无法轻易解决。
所以问题是:是否有任何程序员友好的方式来提供JsonConverter
依赖于ASP.NET Core JsonInputFormatter
?
答案 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));
...
}
虽然感觉有点脏;)