ReflectionExtensions.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Reflection;
  3. namespace Common.LambdaToSQL
  4. {
  5. /// <summary>
  6. /// 成员反射操作
  7. /// </summary>
  8. internal static class ReflectionExtensions
  9. {
  10. public static object GetValue(this MemberInfo member, object instance)
  11. {
  12. switch (member.MemberType)
  13. {
  14. case MemberTypes.Property:
  15. return ((PropertyInfo)member).GetValue(instance, null);
  16. case MemberTypes.Field:
  17. return ((FieldInfo)member).GetValue(instance);
  18. default:
  19. throw new InvalidOperationException();
  20. }
  21. }
  22. public static void SetValue(this MemberInfo member, object instance, object value)
  23. {
  24. switch (member.MemberType)
  25. {
  26. case MemberTypes.Property:
  27. var pi = (PropertyInfo)member;
  28. pi.SetValue(instance, value, null);
  29. break;
  30. case MemberTypes.Field:
  31. var fi = (FieldInfo)member;
  32. fi.SetValue(instance, value);
  33. break;
  34. default:
  35. throw new InvalidOperationException();
  36. }
  37. }
  38. }
  39. }