public object CallNonPublicMethod(object instance, string methodName, object[] param)
{
Type type = instance.GetType();
MethodInfo method = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic);
object result;
try
{
result = method.Invoke(instance, param);
}
catch (TargetInvocationException ex)
{
throw ex.InnerException;
}
return result;
}