C# 使用swagger,如何正确地记录一个被序列化为字符串的POCO值属性?

C# 使用swagger,如何正确地记录一个被序列化为字符串的POCO值属性?,c#,json.net,swagger,C#,Json.net,Swagger,我觉得这个不错, 我觉得很酷 该类只有公共静态属性和私有构造函数,并且可以从字符串隐式推断。我使用它作为模型的属性,当我传递字符串时,它会在asp.net core web api控制器中正确绑定模型。传递无效的字符串值也可以正常工作,因为活页夹能够设置ModelSate=false。我在这行有一些东西: class Mymodel { public TypeSafeEnum TypeSafeEnum { get; set; } public string Name { get; s

我觉得这个不错, 我觉得很酷

该类只有公共静态属性和
私有构造函数
,并且可以从
字符串
隐式推断。我使用它作为模型的属性,当我传递
字符串时,它会在asp.net core web api控制器中正确绑定
模型。传递无效的
字符串
值也可以正常工作,因为
活页夹
能够设置
ModelSate=false
。我在这行有一些东西:

class Mymodel
{
   public TypeSafeEnum TypeSafeEnum { get; set; }
   public string Name { get; set; }
   // the rest of props
}
加入一些swagger api文档,属性被视为一个对象,因此swagger试图提供帮助的示例输入模型如下:

{
  "typeSafeEnum": {},
  "name": "string",
  // the rest
}
大摇大摆的人只看到一个没有公共属性的对象


有没有一种形式可以告诉斯威格我实际上在期待一个
字符串
?或者我会欺骗我的客户,因为不是所有的字符串值都是有效的?但是,我该如何提供有意义的提示呢?

如果属性是字符串,Swagger会将其记录为字符串。字符串显然可以接受任何东西。如果只希望将某些值传递到字符串中,并且希望在Swagger文档中清楚地记录该值,请使用枚举。您也可以使用诸如regex之类的属性验证器(或编写您自己的自定义验证器),但它们不会被记录,只有在验证失败时才会显示。也就是说,对于正则表达式,如果它使正则表达式失败,它将返回一个Json,表示此字段使正则表达式失败,但正则表达式不会显示在swagger文档中。

您是如何生成您的swagger文档的?如果您正在使用,则此链接似乎相关:。