0

インターフェイスから拡張された複数のクラスがあり、「I」がインターフェイスであるリストにある各クラスを編集するためのjsonエディターがあります

それで、プロパティが編集された現在のクラスの変数があるとしましょう

新しい値を含む新しい Json ができました

編集中の現在のクラスに従って新しい json を逆シリアル化するにはどうすればよいですか?

それが役立つ場合はクラス名にアクセスできますが、その方法が見つかりません

現在選択されている Class : IRule と Reflector に対して .GetType() を試しました


class RuleOne : IRule
{
    public bool variable{ get; set; }
    public int num;
}

class RuleTwo : IRule
{
    public bool variable{ get; set; }
    public string name;
}

List<IRule> Rules = new List<IRule>;

Rules.Add(new RuleOne());
Rules.Add(new RuleTwo());

string json = JsonConvert.SerializeObject(Rules[0]);

// How do I deserialize the json string into Rules[0] ?

変更されたjsonが元のクラスに保存されることを期待しています

4

2 に答える 2

0

シリアライザーが型を覚えるのを助ける必要があります。詳細については、このスレッドを確認してください。

于 2019-09-19T03:38:30.817 に答える
0
Type type = Type.GetType($"{EditorRule.GetType().Namespace}.{EditorRule.GetType().Name}"); // Can be replaced dynamically
EditorRule = (IRule)JsonConvert.DeserializeObject(JsonText, type);

これは私にとってはうまくいきました.JsonConvert.Deserialize()の引数として「動的」型を渡すこともできるとは知りませんでした

于 2019-09-19T03:40:03.003 に答える