2016-08-02 81 views
0

我正在使用Swagger作爲Web API文檔。 在我的Web API,我有實體如下:使用SWAGGER在Web API文檔中不調用ShouldSerialize *方法

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; 
    } 
} 

我用DerivedEntity1作爲Web API方法的輸入參數和產生的招搖文檔。

直到這是好的,但問題是,該文檔中的DerivedEntity1 JSON字符串顯示BaseEntProp1 & BaseEntProp2這應該被排除在外。有人可以幫助我如何排除這些?

注意: 1. DerivedEntity1的DerEntProp1屬性被正確排除。 2.只是爲了確認,我的啓動方法生成的文檔後,我已經硬編碼了以下內容:

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

    string tempJson = JsonConvert.SerializeObject(temp); 

以上測試通過,即tempJson不同時BaseEntProp1 & BaseEntProp2。所以,我懷疑SWAGGER未能調用適當的ShouldSerialize *方法。任何幫助,高度讚賞。

感謝

回答

0

最後我解決它以不同的方式爲這個問題是不相關的招搖。

我已經創建了具有虛擬屬性的基本抽象類。在派生類中,我重載了這些屬性並使用JsonIgnore屬性進行了裝飾。這解決了我的問題。

相關問題