asp.net web api-ShouldSerialize*方法未在使用SWAGGER的web api文档中调用



我正在使用Swagger for Web API文档。在我的Web API中,我有如下实体:

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方法的输入参数,并生成了swagger文档。

在此之前,它是好的,但问题是,该文档中的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*方法。非常感谢您的帮助。

感谢

最后我用不同的方式解决了它,因为这个问题与Swagger无关。

我已经创建了具有虚拟属性的基本抽象类。在派生类中,我重载了这些属性,并用JsonIgnore属性进行了修饰。这解决了我的问题。

相关内容

  • 没有找到相关文章

最新更新