我有一个枚举,它作为字符串参数传递给url。我希望每个枚举都有其自己的名称,而不是写枚举的名称。所需工作流程的示例:
public class CurrencyTypeConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context,Type sourceType)
{
//...
}
public override bool CanConvertTo(ITypeDescriptorContext context,Type destinationType)
{
//...
}
public override object ConvertFrom(ITypeDescriptorContext context,CultureInfo culture,object value)
{
//...
}
public override object ConvertTo(ITypeDescriptorContext context,object value,Type destinationType)
{
//...
}
}
[TypeConverter(typeof(CurrencyTypeConverter))]
public enum CurrencyType
{
Eth,Bitcoin
}
// WCF Service interface
[OperationContract]
[WebGet(ResponseFormat = Webmessageformat.Json,UriTemplate = "GetLatestBlock?currencyType={currencyType}")]
Task<LatestBlockResponse> GetLatestBlock(CurrencyType currencyType);
因此,我想像http://<...>/GetLatestBlock?currencyType=BTC
这样调用端点(而不是完全限定的枚举名称currencyType=Bitcoin
)。但是,这不起作用。我创建的TypeConverter被WCF丢弃。
我尝试了一系列排列,例如用[Description]
属性修饰枚举成员,将枚举标记为[Serializable]
,阅读大量在线教程。似乎没有任何作用。
我还应该指出,使用[DataContract]
,[DataMember]
和[EnumMember]
不是一个选择,因为此枚举在netstandard2.0项目中声明。 (除非我误解了,否则似乎这些序列化属性不是一个选择。)
那么-帮助吗? :) (希望外面的人也遇到同样的问题)