1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- namespace Universal;
- public class Property(string name, Type type, object? value)
- {
- public string Name { get; } = name;
- public Type TypeName { get; } = type;
- public object Value { get; } = value ??= "NULL";
- }
- public class ReflectionHelper
- {
- public static IEnumerable<Property> FromatDitits<T>(T model) where T : notnull
- {
- foreach (PropertyInfo propertyInfo in model.GetType().GetRuntimeProperties())
- yield return new(propertyInfo.Name, propertyInfo.PropertyType, propertyInfo.GetValue(model));
- }
- public static Dictionary<string, object?>? GetProperties<T>(T t)
- {
- if (t == null)
- return default;
- PropertyInfo[] properties = t.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);
- if (properties.Length <= 0)
- return default;
- Dictionary<string, object?> ListStr = [];
- foreach (PropertyInfo item in properties)
- {
- string name = item.Name; //名称
- object? value = item.GetValue(t, null); //值
- if (item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String"))
- ListStr.Add(name, value);
- else
- GetProperties(value);
- }
- return ListStr;
- }
- public static Dictionary<string, object?>? GetFields<T>(T t)
- {
- if (t == null)
- return default;
- FieldInfo[] fields = t.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
- if (fields.Length <= 0)
- return default;
- Dictionary<string, object?> ListStr = [];
- foreach (FieldInfo item in fields)
- {
- string name = item.Name; //名称
- object? value = item.GetValue(t); //值
- if (item.FieldType.IsValueType || item.FieldType.Name.StartsWith("String"))
- ListStr.Add(name, value);
- else
- GetFields(value);
- }
- return ListStr;
- }
- }
|