转换Dictionary <string,string> </string,string>时显式转换运算符错误

时间:2013-04-15 11:42:48

标签: c# operator-keyword implicit

用户定义的转换必须转换为封闭类型或来自封闭类型。

尝试转换Dictionary<string,string>时出现问题。这甚至可能吗?

以下是我的代码。

    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);
    }

这是否意味着我应该在Dictionary Class中编写这两个方法? 如果是这样,是否无法将字符串转换为Dictionary? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

如果Dictionary<string, string>string的转换运算符不能转换为您定义运算符的类型,则无法定义其他转换运算符,就像您无法声明其他转换运算符一样这些类型的方法。

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

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);
    }
}