2016-08-02 5 views
0

Ich verwende Swagger für die Web-API-Dokumentation. In meinem Web-API, ich habe Entitäten wie folgt:Die Methoden von ShouldSerialize * werden in der Web-API-Dokumentation mit SWAGGER nicht aufgerufen

public class BaseEntity 
{ 
    public string BaseEntProp1{get;set;} 
    public string BaseEntProp2{get;set;} 

    public virtual bool ShouldSerializeBaseEntProp1() 
    { 
     return true; 
    } 

    public virtual bool ShouldSerializeBaseEntProp1() 
    { 
     return true; 
    } 
} 

public class DerivedEntity1 : BaseEntity 
{ 
    [JsonIgnore] 
    public string DerEntProp1{get;set;} 

    public string DerEntProp2{get;set;} 

    public override bool ShouldSerializeBaseEntProp1() 
    { 
     return false; 
    } 

    public override bool ShouldSerializeBaseEntProp1() 
    { 
     return false; 
    } 
} 

I DerivedEntity1 als Eingabeparameter für eine Web-API-Methode und erzeugt die Prahlerei Dokumentation.

Bis dahin ist es in Ordnung, aber das Problem ist, abgeleiteteEntity1 JSON Zeichenfolge in dieser Dokumentation zeigt BaseEntProp1 & BaseEntProp2, die ausgeschlossen werden sollen. Kann mir jemand helfen, diese auszuschließen?

Hinweis: 1. Die DerEntProp1-Eigenschaft von DerivedEntity1 wird ordnungsgemäß ausgeschlossen. 2. Nur um zu bestätigen, in meinem Startup-Methode nach der Dokumentation erzeugt wird, ich folgende fest einprogrammiert haben:

var temp = new DerivedEntity1 { 
        BaseEntProp1 = "should be ignored", 
        BaseEntProp2 = "this also should be ignored"}; 

    string tempJson = JsonConvert.SerializeObject(temp); 

Above Test bestanden, das heißt nicht tempJson nicht beide BaseEntProp1 & BaseEntProp2. Also, ich vermute, dass SWAGGER es versäumt, die richtigen ShouldSerialize * -Methoden aufzurufen. Jede Hilfe wird sehr geschätzt.

Dank

Antwort

0

Schließlich löste ich es auf eine andere Art und Weise, wie das Problem nicht auf Swagger verwandt ist.

Ich habe abstrakte Basisklassen mit virtuellen Eigenschaften erstellt. In abgeleiteten Klassen habe ich diese Eigenschaften überladen und mit dem JsonIgnore-Attribut dekoriert. Das hat mein Problem gelöst.

Verwandte Themen