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に 2 つのメソッドを記述しなければならないということですか? もしそうなら、文字列をに変換することは不可能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 に答える