コード例 #1
0
        public static SampleChildB GetSampleChid()
        {
            var sc = new SampleChildB();

            sc.TextValue   = Guid.NewGuid().ToString();
            sc.NumberValue = _rnd.Next();

            var x = _rnd.Next();
            var y = _rnd.Next();
            var z = _rnd.Next();

            sc.curColor = Color.red;

            sc.VectorValue      = new Vector3((float)x, (float)y, (float)z);
            sc.ObjectDictionary = new Dictionary <string, int>();
            for (var i = 0; i < 4; i++)
            {
                // SimpleClassObject dobj = GetSimpleClassObject();
                sc.ObjectDictionary.Add("dddd" + i, i);
            }

            sc.ObjectList = new List <SimpleClassObject>();
            for (var j = 0; j < 4; j++)
            {
                var lobj = GetSimpleClassObject();
                sc.ObjectList.Add(lobj);
            }
            return(sc);
        }
コード例 #2
0
    /// <summary>
    /// Polymorphism
    /// </summary>
    public void PolymorphicSerialization()
    {
        LogStart("Polymorphic Serialization");

        try
        {
            var list = new List <SampleBase>();

            for (var i = 0; i < 4; i++)
            {
                SampleChildB newChild = TestCaseUtils.GetSampleChid();
                list.Add(newChild);
                // Debug.Log("origin color is " + newChild.curColor);
            }

            // add child A
            for (var i = 0; i < 3; i++)
            {
                SampleChildA newChild = TestCaseUtils.GetSampleChidA();
                list.Add(newChild);
            }


            for (int i = 0; i < list.Count; i++)
            {
                list[i].UdpateCoolThing();
            }

            var serialized = JsonConvert.SerializeObject(list, Formatting.None, new JsonSerializerSettings {
                TypeNameHandling = TypeNameHandling.All
            });
            LogSerialized(serialized);

            List <SampleBase> newList = JsonConvert.DeserializeObject <List <SampleBase> >(serialized, new JsonSerializerSettings {
                TypeNameHandling = TypeNameHandling.All
            });


            LogResult(list[2].TextValue, newList[2].TextValue);

            for (int i = 0; i < newList.Count; i++)
            {
                SampleBase objA = (newList[i]);
                objA.UdpateCoolThing();
            }

            if (list[2].TextValue != newList[2].TextValue)
            {
                DisplayFail("Polymorphic Serialization", BAD_RESULT_MESSAGE);
            }
            else
            {
                DisplaySuccess("Polymorphic Serialization");
            }



            Dictionary <int, SampleBase> testForDic = new Dictionary <int, SampleBase>();

            for (var i = 0; i < 4; i++)
            {
                SampleChildB newChild = TestCaseUtils.GetSampleChid();
                testForDic.Add(i, newChild);
            }

            // add child A
            for (var i = 6; i < 10; i++)
            {
                SampleChildA newChild = TestCaseUtils.GetSampleChidA();
                testForDic.Add(i, newChild);
            }
            serialized = JsonConvert.SerializeObject(testForDic, Formatting.None, new JsonSerializerSettings {
                TypeNameHandling = TypeNameHandling.Objects
            });
            LogSerialized(serialized);

            Dictionary <int, SampleBase> newDic = JsonConvert.DeserializeObject <Dictionary <int, SampleBase> >(serialized, new JsonSerializerSettings {
                TypeNameHandling = TypeNameHandling.Objects
            });

            foreach (KeyValuePair <int, SampleBase> data in newDic)
            {
                if (data.Value.GetType() == typeof(SampleChildA))
                {
                    SampleChildA childAObject = data.Value as SampleChildA;
                    childAObject.UpdateChildAState();
                    Debug.Log("this is sampleChildA class ");
                }
                else if (data.Value.GetType() == typeof(SampleChildB))
                {
                    Debug.Log("this is sampleChildB class ");
                }
                Debug.Log(" this item type is " + data.GetType());
                data.Value.UdpateCoolThing();
            }
        }
        catch (Exception ex)
        {
            DisplayFail("Polymorphic Serialization", ex.Message);
            throw;
        }


        LogEnd(3);
    }