2016-12-29 4 views
0

Ich muss eine benutzerdefinierte JsonConverter mit ASP.NET Core aus einem Grund verwenden, und ich muss es mit JsonInputFormatter verwenden. Der einzige Weg, die ich gefunden habe ist AddJsonOption Erweiterung Methode wie folgt zu verwenden:Benutzerdefinierte Json Converter mit Abhängigkeit

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

Aber es hat einen Fehler: CustomConverter erfordert eine Abhängigkeit von einem DI-Container, die nicht leicht bei der Konfiguration gelöst werden können. Also die Frage: Gibt es eine Programmiererfreundliche Möglichkeit, eine JsonConverter mit Abhängigkeit zu ASP.NET Core JsonInputFormatter zu liefern?

Antwort

1

Eine schnelle Abhilfe wäre, es auf die Configure Methode zu verschieben.

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

    ... 
} 

fühlt sich immer noch ein wenig schmutzig obwohl;)