是否可以使用 Json.NET 在 C# 中反序列化形状

本文关键字:反序列化 可以使 Json NET 是否 | 更新日期: 2023-09-27 18:31:20

已编辑

是否可以反序列化作为形状作为属性的 c# 对象?

我有一个触摸对象,它继承

自圆形对象,它继承自作为形状作为属性的障碍物对象。

我将触摸对象序列化为 json,如下所示:

        Touch touch = new Touch(0.15, 0, 4.05);
        touch.Shape.Stroke = Brushes.Black;
        string json = JsonConvert.SerializeObject(touch);

我想使用他的 json 反序列化这个对象,如下所示:

        Touch test = JsonConvert.DeserializeObject<Touch>(json);

但是我收到这行代码的访问冲突。

我认为它来自我的障碍物对象中的 Shape 属性,该属性声明如下:

        protected Shape shape;
        [JsonProperty(PropertyName = "Shape")]
        public Shape Shape
        {
            get { return shape; }
            set { this.shape = value; }
        }

有没有办法解决这个问题?

是否可以使用 Json.NET 在 C# 中反序列化形状

我找到了一种序列化的方法。我刚刚使用 [JsonIgnore] 从 Json 序列化中删除了我的形状,并使用方法创建它。我只需要两行而不是一行即可通过序列化创建我的对象:

Touch test = JsonConverter.Deserialize<Touch>(json);
test.CreateShape();

谢谢你的帮助=)