2

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

尝试转换时出现问题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);
    }

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

4

1 回答 1

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);
    }
}
于 2013-04-15T11:56:16.860 回答