我正在使用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属性进行了修饰。这解决了我的问题。