コード例 #1
0
        public void TestSerializeAttribute()
        {
            var value = new CheckAttribute();

            value.A = Rand.Default.RandInt();
            value.a = Rand.Default.RandInt();
            value.Setb(Rand.Default.RandInt());
            value.C = Rand.Default.RandInt();
            value.c = Rand.Default.RandInt();

            var writer = new ByteBufferWriter(BufferSerializer.Capacity(value));

            value.BufferWrite(writer);
            var valueSerialized = BufferSerializer.Read <CheckAttribute>(writer.GetBufferReader());

            Assert.AreNotEqual(value.A, valueSerialized.A, $"check serialize skip failed, value A: {value.A}, serialized value A: {valueSerialized.A}");
            Assert.AreNotEqual(value.a, valueSerialized.a, $"check serialize skip failed, value a: {value.a}, serialized value a: {valueSerialized.a}");
            Assert.AreEqual(value.Getb(), valueSerialized.Getb(), $"check serialize failed, value b: {value.Getb()}, serialized value b: {valueSerialized.Getb()}");
            Assert.AreEqual(value.C, valueSerialized.C, $"check serialize read failed, value C: {value.C}, serialized value C: {valueSerialized.C}");
            Assert.AreEqual(value.c, valueSerialized.c, $"check serialize read failed, value c: {value.c}, serialized value c: {valueSerialized.c}");

            valueSerialized = BufferSerializer.Merge <CheckAttribute>(writer.GetBufferReader(), default(CheckAttribute));
            Assert.AreNotEqual(value.A, valueSerialized.A, $"check serialize skip failed, value A: {value.A}, serialized value A: {valueSerialized.A}");
            Assert.AreNotEqual(value.a, valueSerialized.a, $"check serialize skip failed, value a: {value.a}, serialized value a: {valueSerialized.a}");
            Assert.AreEqual(value.Getb(), valueSerialized.Getb(), $"check serialize failed, value b: {value.Getb()}, serialized value b: {valueSerialized.Getb()}");
            Assert.AreEqual(value.C, valueSerialized.C, $"check serialize read failed, value C: {value.C}, serialized value C: {valueSerialized.C}");
            Assert.AreEqual(value.c, valueSerialized.c, $"check serialize read failed, value c: {value.c}, serialized value c: {valueSerialized.c}");

            var valueAs = BufferSerializer.Read <CheckAttributeAs>(writer.GetBufferReader());

            Assert.AreEqual(value.C, valueAs.A, $"check serialize As failed, value A: {value.C}, serialized value A: {valueAs.A}");
            Assert.AreEqual(value.c, valueAs.a, $"check serialize As failed, value a: {value.c}, serialized value a: {valueAs.a}");
            Assert.AreEqual(value.Getb(), valueAs.b, $"check serialize failed, value b: {value.Getb()}, serialized value b: {valueAs.b}");
        }
コード例 #2
0
 /// <summary>
 /// 打印指定的属性备注信息和值
 /// </summary>
 /// <typeparam name="T">当前类</typeparam>
 /// <param name="property">属性</param>
 /// <param name="t">类实体</param>
 public static void PrintRemarkAndValueByProperty <T>(this T t, string propertyName) where T : class
 {
     //Type type = typeof(T);
     //PropertyInfo property = type.GetProperty(propertyName);
     t.PrintByPropertyName(propertyName, i =>
     {
         var remark = CheckAttribute.GetPropertyRemark(i, t);
         Console.WriteLine($"{(string.IsNullOrEmpty(remark) ? i.Name + "无备注信息" : remark)}----{i.GetValue(t)}");
     });
 }
コード例 #3
0
 /// <summary>
 /// 打印当前类全部的属性备注和值
 /// </summary>
 /// <typeparam name="T">类型</typeparam>
 /// <param name="t">类型实例化</param>
 public static void PrintRemarkAndValueByProperties <T>(this T t) where T : class
 {
     t.PrintProperties(i =>
     {
         var remark = CheckAttribute.GetPropertyRemark(i, t);
         Console.WriteLine($"{(string.IsNullOrEmpty(remark) ? i.Name + "无备注信息" : remark)}----{i.GetValue(t)}");
     });
     //Type type = typeof(T);
     //foreach (var item in type.GetProperties())
     //{
     //    var remark = ExecuteAttribute.GetFiledRemark(item);
     //    Console.WriteLine($"{(string.IsNullOrEmpty(remark) ? item.Name + "无备注信息" : remark)}----{item.GetValue(t)}");
     //}
 }
コード例 #4
0
ファイル: VariableAttribute.cs プロジェクト: yanagiragi/SWC
    public override void OnGUI(Rect p_position, SerializedProperty p_property, GUIContent p_Label)
    {
        CheckAttribute _checker = attribute as CheckAttribute;

        if (!_checker.OK)
        {
            GUI.color = Color.red;
        }

        EditorGUI.BeginChangeCheck();
        Rect _Position = p_position;

        EditorGUI.PropertyField(_Position, p_property);

        if (EditorGUI.EndChangeCheck() || _checker.isFirst)
        {
            _checker.isFirst = false;
            _checker.OK      = Check(p_property, _checker.FunName);
        }
    }