我在我的网络API上使用了一些标记枚举,到目前为止,我所看到的只是改变了作为数组传递的标志的组合值。
有没有办法以更友好的.NET / C#方式声明它?也许使用collectionFormat=csv
。
修改1
想象一下,我有这个枚举:
[Flags]
public enum Directions
{
Up = 1,
Down = 2,
Left = 4,
Right = 8,
}
这个C#方法作为API公开:
public class Request
{
Directions Directions {get; set; }
}
public void SetAvailableDirections(Request request)
{
// ...
}
因为参数有多个值,所以它应该是array
但是如果我可以构建一个将collectionFormat
设置为csv
的swagger规范,那么它可以是array
就swagger而言,C#/ CLR中有一个普通的旧标志。
这可能吗?
修改2
使用Service Stack它会(就像我曾经被使用它的人告诉过的那样):
[Flags]
public enum Directions
{
Up = 1,
Down = 2,
Left = 4,
Right = 8,
}
public class Request
{
[ApiMember(Name = nameof(Directions), AllowMultiple = true, ...)]
[ApiAllowableValues(nameof(Directions), typeof(Directions))]
Directions Directions {get; set; }
}