ReflectionUtil.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. using System.Reflection;
  2. namespace SongBrowserPlugin
  3. {
  4. public static class ReflectionUtil
  5. {
  6. public static void SetPrivateField(object obj, string fieldName, object value)
  7. {
  8. var prop = obj.GetType().GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
  9. prop.SetValue(obj, value);
  10. }
  11. public static T GetPrivateField<T>(object obj, string fieldName)
  12. {
  13. var prop = obj.GetType().GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance);
  14. var value = prop.GetValue(obj);
  15. return (T) value;
  16. }
  17. public static void SetPrivateProperty(object obj, string propertyName, object value)
  18. {
  19. var prop = obj.GetType().GetProperty(propertyName, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
  20. prop.SetValue(obj, value, null);
  21. }
  22. public static void InvokePrivateMethod(object obj, string methodName, object[] methodParams)
  23. {
  24. MethodInfo dynMethod = obj.GetType().GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance);
  25. dynMethod.Invoke(obj, methodParams);
  26. }
  27. }
  28. }