This commit is contained in:
parent
0287c1a2fc
commit
01e7e4e35e
|
@ -23,33 +23,35 @@ namespace BITKit
|
|||
public static string GetDisplayName(this object self)
|
||||
{
|
||||
{
|
||||
if (self.GetType().GetCustomAttribute<DisplayNameAttribute>() is { } displayNameAttribute)
|
||||
var type = self is Type t? t: self.GetType();
|
||||
if (type.GetCustomAttribute<DisplayNameAttribute>() is { } displayNameAttribute)
|
||||
{
|
||||
return displayNameAttribute.DisplayName;
|
||||
}
|
||||
#if NET5_0_OR_GREATER
|
||||
if (self.GetType().GetCustomAttribute<DisplayAttribute>() is { } displayAttribute)
|
||||
if (type.GetCustomAttribute<DisplayAttribute>() is { } displayAttribute)
|
||||
{
|
||||
return displayAttribute.Name;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
{
|
||||
if (self is Enum)
|
||||
{
|
||||
var field = self.GetType().GetField(self.ToString()!);
|
||||
if (self is not Enum) return self.ToString();
|
||||
|
||||
var field = self.GetType().GetField(self.ToString()!);
|
||||
|
||||
if(field is null) return self.ToString();
|
||||
|
||||
if (field.GetCustomAttribute<DisplayNameAttribute>() is DisplayNameAttribute displayNameAttribute)
|
||||
{
|
||||
return displayNameAttribute.DisplayName;
|
||||
}
|
||||
#if NET5_0_OR_GREATER
|
||||
if (field.GetCustomAttribute<DisplayAttribute>() is DisplayAttribute displayAttribute)
|
||||
{
|
||||
return displayAttribute.Name;
|
||||
}
|
||||
#endif
|
||||
if (field.GetCustomAttribute<DisplayNameAttribute>() is { } displayNameAttribute)
|
||||
{
|
||||
return displayNameAttribute.DisplayName;
|
||||
}
|
||||
#if NET5_0_OR_GREATER
|
||||
if (field.GetCustomAttribute<DisplayAttribute>() is { } displayAttribute)
|
||||
{
|
||||
return displayAttribute.Name;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return self.ToString();
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ namespace BITKit
|
|||
|
||||
public override string ToString()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
return JsonConvert.SerializeObject(this,Formatting.Indented);
|
||||
}
|
||||
|
||||
[JsonProperty("status_code")] public int StatusCode = 200;
|
||||
|
|
|
@ -16,6 +16,34 @@ namespace BITKit
|
|||
public T Value { get; set; }=default;
|
||||
public object Obj { get => Value; set => Value = (T)value; }
|
||||
}
|
||||
|
||||
public class PropertyWrapper<T> : IWrapper<T>
|
||||
{
|
||||
private readonly PropertyInfo _field;
|
||||
private readonly object _target;
|
||||
public event Action<T, T> OnValueChanged;
|
||||
public PropertyWrapper(PropertyInfo field, object target)
|
||||
{
|
||||
_field = field;
|
||||
_target = target ?? throw new ArgumentNullException(nameof(target));
|
||||
}
|
||||
public T Value
|
||||
{
|
||||
get => (T)_field.GetValue(_target);
|
||||
set
|
||||
{
|
||||
var prev = Value;
|
||||
_field.SetValue(_target, value);
|
||||
OnValueChanged?.Invoke(prev, value);
|
||||
}
|
||||
}
|
||||
|
||||
public object Obj
|
||||
{
|
||||
get => _field.GetValue(_target);
|
||||
set => _field.SetValue(_target, value);
|
||||
}
|
||||
}
|
||||
public class FieldWrapper<T> : IWrapper<T>
|
||||
{
|
||||
private readonly FieldInfo _field;
|
||||
|
|
|
@ -5,6 +5,82 @@ using Unity.Mathematics;
|
|||
#if NET5_0_OR_GREATER
|
||||
namespace BITKit
|
||||
{
|
||||
public class Int3JsonConvertJsonConverter : JsonConverter<int3>
|
||||
{
|
||||
public override void WriteJson(JsonWriter writer, int3 value, JsonSerializer serializer)
|
||||
{
|
||||
writer.WriteStartObject();
|
||||
|
||||
writer.WritePropertyName(nameof(value.x));
|
||||
writer.WriteValue(value.x);
|
||||
|
||||
writer.WritePropertyName(nameof(value.y));
|
||||
writer.WriteValue(value.y);
|
||||
|
||||
writer.WritePropertyName(nameof(value.z));
|
||||
writer.WriteValue(value.z);
|
||||
|
||||
writer.WriteEndObject();
|
||||
}
|
||||
|
||||
public override int3 ReadJson(JsonReader reader, Type objectType, int3 existingValue, bool hasExistingValue, JsonSerializer serializer)
|
||||
{
|
||||
var result = new int3(0, 0, 0); // 默认值为 (0, 0, 0)
|
||||
|
||||
while (reader.TokenType != JsonToken.EndObject)
|
||||
{
|
||||
reader.Read();
|
||||
if (reader.TokenType != JsonToken.PropertyName) continue;
|
||||
|
||||
var property = reader.Value.ToString();
|
||||
if (property == nameof(int3.x)) result.x = (int)reader.ReadAsInt32()!;
|
||||
if (property == nameof(int3.y)) result.y = (int)reader.ReadAsInt32()!;
|
||||
if (property == nameof(int3.z)) result.z = (int)reader.ReadAsInt32()!;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
public class Int4JsonConvertJsonConverter : JsonConverter<int4>
|
||||
{
|
||||
public override void WriteJson(JsonWriter writer, int4 value, JsonSerializer serializer)
|
||||
{
|
||||
writer.WriteStartObject();
|
||||
|
||||
writer.WritePropertyName(nameof(value.x));
|
||||
writer.WriteValue(value.x);
|
||||
|
||||
writer.WritePropertyName(nameof(value.y));
|
||||
writer.WriteValue(value.y);
|
||||
|
||||
writer.WritePropertyName(nameof(value.z));
|
||||
writer.WriteValue(value.z);
|
||||
|
||||
writer.WritePropertyName(nameof(value.w));
|
||||
writer.WriteValue(value.w);
|
||||
|
||||
writer.WriteEndObject();
|
||||
}
|
||||
|
||||
public override int4 ReadJson(JsonReader reader, Type objectType, int4 existingValue, bool hasExistingValue, JsonSerializer serializer)
|
||||
{
|
||||
var result = new int4(0, 0, 0, 0); // 默认值为 (0, 0, 0, 0)
|
||||
|
||||
while (reader.TokenType != JsonToken.EndObject)
|
||||
{
|
||||
reader.Read();
|
||||
if (reader.TokenType != JsonToken.PropertyName) continue;
|
||||
|
||||
var property = reader.Value.ToString();
|
||||
if (property == nameof(int4.x)) result.x = (int)reader.ReadAsInt32()!;
|
||||
if (property == nameof(int4.y)) result.y = (int)reader.ReadAsInt32()!;
|
||||
if (property == nameof(int4.z)) result.z = (int)reader.ReadAsInt32()!;
|
||||
if (property == nameof(int4.w)) result.w = (int)reader.ReadAsInt32()!;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
public class Float2JsonConvertJsonConverter:JsonConverter<float2>
|
||||
{
|
||||
public override void WriteJson(JsonWriter writer, float2 value, JsonSerializer serializer)
|
||||
|
@ -37,6 +113,42 @@ namespace BITKit
|
|||
return result;
|
||||
}
|
||||
}
|
||||
public class Float3JsonConvertJsonConverter : JsonConverter<float3>
|
||||
{
|
||||
public override void WriteJson(JsonWriter writer, float3 value, JsonSerializer serializer)
|
||||
{
|
||||
writer.WriteStartObject();
|
||||
|
||||
writer.WritePropertyName(nameof(value.x));
|
||||
writer.WriteValue((double)value.x); // 将 float 转为 double,避免精度问题
|
||||
|
||||
writer.WritePropertyName(nameof(value.y));
|
||||
writer.WriteValue((double)value.y); // 将 float 转为 double
|
||||
|
||||
writer.WritePropertyName(nameof(value.z));
|
||||
writer.WriteValue((double)value.z); // 将 float 转为 double
|
||||
|
||||
writer.WriteEndObject();
|
||||
}
|
||||
|
||||
public override float3 ReadJson(JsonReader reader, Type objectType, float3 existingValue, bool hasExistingValue, JsonSerializer serializer)
|
||||
{
|
||||
var result = float3.zero; // 默认值为 (0, 0, 0)
|
||||
|
||||
while (reader.TokenType != JsonToken.EndObject)
|
||||
{
|
||||
reader.Read();
|
||||
if (reader.TokenType != JsonToken.PropertyName) continue;
|
||||
|
||||
var property = reader.Value.ToString();
|
||||
if (property == nameof(float3.x)) result.x = (float)reader.ReadAsDouble()!;
|
||||
if (property == nameof(float3.y)) result.y = (float)reader.ReadAsDouble()!;
|
||||
if (property == nameof(float3.z)) result.z = (float)reader.ReadAsDouble()!;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
public class Float4JsonConvertJsonConverter:JsonConverter<float4>
|
||||
{
|
||||
public override void WriteJson(JsonWriter writer, float4 value, JsonSerializer serializer)
|
||||
|
|
|
@ -61,6 +61,7 @@ namespace BITKit.UX
|
|||
get=>_currentTab;
|
||||
set
|
||||
{
|
||||
if(_currentTab == value)return;
|
||||
_currentTab = value;
|
||||
SetTabs(value);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue