用户定义的转换必须转换为封闭类型或来自封闭类型。
尝试转换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
?
谢谢你的帮助。
答案 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);
}
}