我有一个Web API控制器操作
[Route("{type}")]
public IEnumerable<Content> Get(ContentType type)
{
...
}
其中ContentType
是枚举,type
是作为字符串提供的,而不是整数。
当我检查了JsonConverterAttribute
类时,似乎应该可以将它放在方法参数旁边
[AttributeUsage(AttributeTargets.Class |
AttributeTargets.Struct |
AttributeTargets.Enum |
AttributeTargets.Property |
AttributeTargets.Field |
AttributeTargets.Interface |
AttributeTargets.Parameter, // <= HERE!
AllowMultiple = false)]
public class JsonConverterAttribute : Attribute
...
但这似乎不起作用:
[Route("{type}")]
public IEnumerable<Content> Get([JsonConverter(typeof(StringEnumConverter))] ContentType type)
{
...
}
我收到了一个错误:
参数字典包含非可空类型参数'type'的空条目'.... ContentType'用于'...'中的方法'...'。可选参数必须是引用类型,可空类型,或者声明为可选参数。
我也不想将此转换器放在我的全局配置中,因为我希望我的枚举序列化为整数。我只需要在一些地方从字符串中反序列化。
可能的替代方法是传入字符串并使用Enum.Parse()
方法手动解析它,但如果可能的话我想避免使用它。