ReflectorExtensions.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using AspectCore.Extensions.Reflection;
  2. using System;
  3. using System.Reflection;
  4. namespace TEAMModelOS.SDK.Helper.Common.ReflectorExtensions
  5. {
  6. public static class ReflectorExtensions
  7. {
  8. public static T GetPropertyValue<T>(this object obj, string name, BindingFlags bindingFlags) where T : class
  9. {
  10. var chProperty = obj.GetType().GetTypeInfo().GetProperty(name, bindingFlags);
  11. var chReflector = chProperty.GetReflector();
  12. var value = chReflector.GetValue(obj) as T;
  13. return value;
  14. }
  15. public static Tuple<T, FieldInfo> GetFieldValue<T>(this object obj, string name, BindingFlags bindingFlags) where T : class
  16. {
  17. var chField = obj.GetType().GetTypeInfo().GetField(name, bindingFlags);
  18. var chReflector = chField.GetReflector();
  19. var value = chReflector.GetValue(obj) as T;
  20. return Tuple.Create(value, chField);
  21. }
  22. public static T GetFieldValue<T>(this Type type, string name, BindingFlags bindingFlags) where T : class
  23. {
  24. var chField = type.GetTypeInfo().GetField(name, bindingFlags);
  25. var chReflector = chField.GetReflector();
  26. var value = chReflector.GetValue(null) as T;
  27. return value;
  28. }
  29. }
  30. }