/// <summary>
 /// 随机字段
 /// </summary>
 public override void RandomField()
 {
     if (HasRandom)
     {
         return;
     }
     HasRandom = true;
     System.Random random = new System.Random();
     ParentField      = random.Next(int.MinValue, int.MaxValue);
     BoolVal          = random.Next(0, 2) == 0;
     ByteVal          = (byte)random.Next(byte.MinValue, byte.MaxValue);
     CharVal          = (char)random.Next('\u4E00', '\u9FA5');
     DecimalVal       = (decimal)random.Next(int.MinValue, int.MaxValue);
     DoubleVal        = (double)random.Next(int.MinValue, int.MaxValue);
     EnumVal          = (EnumTest)random.Next((int)EnumTest.A, (int)EnumTest.E);
     FloatVal         = (float)random.Next(int.MinValue, int.MaxValue);
     IntVal           = random.Next(int.MinValue, int.MaxValue);
     LongVal          = (long)random.Next(int.MinValue, int.MaxValue);
     SByteVal         = (sbyte)random.Next(sbyte.MinValue, sbyte.MaxValue);
     ShortVal         = (short)random.Next(short.MinValue, short.MaxValue);
     StringVal        = random.Next(int.MinValue, int.MaxValue).ToString();
     UIntVal          = (uint)random.Next(0, int.MaxValue);
     ULongVal         = (ulong)random.Next(0, int.MaxValue);
     UShortVal        = (ushort)random.Next(ushort.MinValue, ushort.MaxValue);
     MaterialVal      = AssetDatabase.LoadMainAssetAtPath(random.Next(0, 2) == 0? Const_PathMaterialB : Const_PathMaterialC) as Material;
     NonSerializedInt = random.Next(int.MinValue, IntValDefault);
     SerializableVal.RandomField();
     ArrayVal = new Test_ToXmlOther[random.Next(2, 6)];
     for (int i = 0; i < ArrayVal.Count(); i++)
     {
         ArrayVal[i] = new Test_ToXmlOther();
         ArrayVal[i].RandomField();
     }
     ListVal = new List <Test_ToXmlOther>();
     for (int i = 0; i < random.Next(2, 6); i++)
     {
         ListVal.Add(new Test_ToXmlOther());
         ListVal[i].RandomField();
     }
     DictionaryVal = new Dictionary <int, Test_ToXmlOther>();
     for (int i = 0; i < random.Next(2, 6); i++)
     {
         DictionaryVal.Add(i, new Test_ToXmlOther());
         DictionaryVal[i].RandomField();
     }
 }
 /// <summary>
 /// 数据相同验证
 /// </summary>
 /// <param name="tester">测试对象</param>
 /// <param name="listHasTest">已测试对象</param>
 /// <returns>测试结果</returns>
 public bool ValueEqual(Test_ToXmlOther tester, List <Test_ToXmlBase> listHasTest)
 {
     if (listHasTest.Contains(this))
     {
         return(true);
     }
     listHasTest.Add(this);
     if (IntVal != tester.IntVal)
     {
         throw new Exception($"{nameof(IntVal)} is not equal!");
     }
     if (ParentField != tester.ParentField)
     {
         throw new Exception($"{nameof(ParentField)} is not equal!");
     }
     if (OtherVal != null && !OtherVal.ValueEqual(tester.OtherVal, listHasTest))
     {
         throw new Exception($"{nameof(OtherVal)} is not equal!");
     }
     return(true);
 }
 /// <summary>
 /// 构造函数
 /// </summary>
 public Test_ToXmlOther()
 {
     ThisVal = this;
 }