加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何让System.Web.Script.javascriptSerializer忽略属性?

发布时间:2020-12-15 17:46:13 所属栏目:百科 来源:网络整理
导读:[Serializable]public class ModelResource:ISerializable{ public Int64 Ore { get; private set; } public Int64 Crystal { get; private set; } public Int64 Hydrogen { get; private set; } //needs to be ignored public Int64 Total { get { return O
[Serializable]
public class ModelResource:ISerializable
{
   public Int64 Ore { get; private set; }
   public Int64 Crystal { get; private set; }
   public Int64 Hydrogen { get; private set; }
   //needs to be ignored
   public Int64 Total { get { return Ore + Hydrogen + Crystal; } }
   public string ResourceType { get; private set; }
   public Int64 HerculesNeeded { get { return Total / 25000; } }
   public Int64 AtlasNeeded { get { return Total / 5000; } }

   public bool IsPlanet { get { return ResourceType == "Planet"; } }
   //causes serializer to stackoverflow
   public ModelResource MakeChild {get{return new ModelResource(Ore/2,Crystal/2,Hydrogen/2);}}


    public string ToJson()
    {
        var jss = new System.Web.Script.Serialization.JavaScriptSerializer(new SimpleTypeResolver());
        return jss.Serialize(this); //throws recursion limit exceed exception
    }
    #region ISerializable Members

    public void GetObjectData(SerializationInfo info,StreamingContext context)
    {
        info.AddValue("Ore",Ore);
        info.AddValue("Crystal",Crystal);
        info.AddValue("Hydrogen",Hydrogen);
        info.AddValue("ResourceType",ResourceType);
    }
    private ModelResource(SerializationInfo si,StreamingContext context)
    {
        Ore = si.GetInt64("Ore");
        Crystal = si.GetInt64("Crystal");
        Hydrogen = si.GetInt64("Hydrogen");
        ResourceType = si.GetString("ResourceType");
    }


    #endregion
}

解决方法

通常我建议告诉它忽略父属性(创建循环) – 在这种情况下,添加 [ScriptIgnore] – 但我看不到除基本成员之外的其他东西 – 这个类本身足以导致错误?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读