| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- using System;
- using System.Reflection;
- namespace Muchinfo.WPF.Controls.WebBrowser
- {
- public static class ReflectionService
- {
- public readonly static BindingFlags BindingFlags =
- BindingFlags.Instance |
- BindingFlags.Public |
- BindingFlags.NonPublic |
- BindingFlags.FlattenHierarchy |
- BindingFlags.CreateInstance;
- public static object ReflectGetProperty(this object target, string propertyName)
- {
- if (target == null)
- throw new ArgumentNullException("target");
- if (string.IsNullOrWhiteSpace(propertyName))
- throw new ArgumentException("propertyName can not be null or whitespace", "propertyName");
- var propertyInfo = target.GetType().GetProperty(propertyName, BindingFlags);
- if (propertyInfo == null)
- throw new ArgumentException(string.Format("Can not find property '{0}' on '{1}'", propertyName, target.GetType()));
- return propertyInfo.GetValue(target, null);
- }
- public static object ReflectInvokeMethod(this object target, string methodName, Type[] argTypes, object[] parameters)
- {
- if (target == null)
- throw new ArgumentNullException("target");
- if (string.IsNullOrWhiteSpace(methodName))
- throw new ArgumentException("methodName can not be null or whitespace", "methodName");
- var methodInfo = target.GetType().GetMethod(methodName, BindingFlags, null, argTypes, null);
- if (methodInfo == null)
- throw new ArgumentException(string.Format("Can not find method '{0}' on '{1}'", methodName, target.GetType()));
- return methodInfo.Invoke(target, parameters);
- }
- }
- }
|