2013-04-15 75 views
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); 
    } 

這是否意味着我應該寫這兩種方法在Dictionary類? 如果是這樣,是不是可以將字符串轉換爲Dictionary? 感謝您的幫助。

+0

豈不'Dictionary'必須'詞典<串,對象>'?除非你不打算對深層次結構進行反序列化 – Romoku

回答

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); 
    } 
} 
相關問題