Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何让System.Web.Script.javascriptSerializer忽略属性?_C#_Serialization_Javascriptserializer - Fatal编程技术网

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

C# 如何让System.Web.Script.javascriptSerializer忽略属性?,c#,serialization,javascriptserializer,C#,Serialization,Javascriptserializer,通常我会建议告诉它忽略父属性(创建循环)——在本例中是通过添加——但我看不到除了基本成员以外的任何东西——这个类本身是否足以导致错误?您能展示一个调用JSON的代码示例吗?当我尝试它时,它不会抛出…我怀疑至少有一些代码被省略了,因为没有很好的方法来设置值-?显然我忽略了一个属性,我认为javascriptSerializer可能会注意ISerializable接口 [Serializable] public class ModelResource:ISerializable { publi

通常我会建议告诉它忽略父属性(创建循环)——在本例中是通过添加——但我看不到除了基本成员以外的任何东西——这个类本身是否足以导致错误?

您能展示一个调用JSON的代码示例吗?当我尝试它时,它不会抛出…我怀疑至少有一些代码被省略了,因为没有很好的方法来设置值-?显然我忽略了一个属性,我认为javascriptSerializer可能会注意ISerializable接口
[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
}