0

我有多个从接口扩展的类,并且我有一个 json 编辑器来编辑列表中的每个类,“I”是我的接口

所以假设我有当前类的变量,其中属性已被编辑

我现在有了包含新值的新 Json

如何根据正在编辑的当前类反序列化新的 json?

如果有帮助,我可以访问班级名称,但我找不到办法

我已经为当前选定的类尝试了 .GetType() :IRule 和反射器


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 回答