在C#.Net 472,WCF中具有枚举的TypeConverter

我有一个枚举,它作为字符串参数传递给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项目中声明。 (除非我误解了,否则似乎这些序列化属性不是一个选择。)

那么-帮助吗? :) (希望外面的人也遇到同样的问题)

sv37vs 回答:在C#.Net 472,WCF中具有枚举的TypeConverter

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3153632.html

大家都在问