1234567891011121314151617181920212223242526272829303132 |
- using System.Reflection;
- namespace SongBrowserPlugin
- {
- public static class ReflectionUtil
- {
- public static void SetPrivateField(object obj, string fieldName, object value)
- {
- var prop = obj.GetType().GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
- prop.SetValue(obj, value);
- }
-
- public static T GetPrivateField<T>(object obj, string fieldName)
- {
- var prop = obj.GetType().GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance);
- var value = prop.GetValue(obj);
- return (T) value;
- }
-
- public static void SetPrivateProperty(object obj, string propertyName, object value)
- {
- var prop = obj.GetType().GetProperty(propertyName, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
- prop.SetValue(obj, value, null);
- }
- public static void InvokePrivateMethod(object obj, string methodName, object[] methodParams)
- {
- MethodInfo dynMethod = obj.GetType().GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance);
- dynMethod.Invoke(obj, methodParams);
- }
- }
- }
|