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}"); }
/// <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)}"); }); }
/// <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)}"); //} }
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); } }