【问题标题】:Explicit conversion operator error when converting Dictionary<string,string>转换 Dictionary<string,string> 时出现显式转换运算符错误
【发布时间】:2013-04-07 12:21:42
【问题描述】:

用户定义的转换必须与封闭类型相互转换。

尝试转换Dictionary&lt;string,string&gt; 时出现问题。这甚至可能吗?

下面是我的代码。

    using Newtonsoft.Json;

    public static implicit operator Dictionary<string, string>(string jsonString)
    {
        return JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonString); ;
    }

    public static implicit operator string(Dictionary<string, string> dict)
    {
        return JsonConvert.SerializeObject(dict);
    }

是不是说我要把这两个方法写在DictionaryClass里面? 如果是这样,是否无法将字符串转换为Dictionary? 感谢您的帮助。

【问题讨论】:

  • Dictionary 不需要是Dictionary&lt;string,object&gt; 吗?除非你不打算反序列化深层层次结构

标签: c# operator-keyword implicit


【解决方案1】:

如果 Dictionary&lt;string, string&gt;string 不能从或转换为您定义运算符的类型,则您不能为它们定义额外的转换运算符,就像您不能为这些类型声明额外的方法一样.

您需要将这些转换定义为普通的静态实用程序方法,或者您可以定义一个派生自Dictionary&lt;string, string&gt; 的类并在那里定义运算符:

public class StringDictionary : Dictionary<string, string>
{
    public static implicit operator StringDictionary(string jsonString) 
    {
        return JsonConvert.DeserializeObject<StringDictionary>(jsonString);;
    }

    public static implicit operator string(StringDictionary dict) 
    {
        return JsonConvert.SerializeObject(dict);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 2014-10-22
    • 2010-12-30
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多