Exemple #1
0
 /// <summary>invoke snippet method</summary>
 /// <param name="assemblyHashCode"></param>
 /// <param name="methodInfo"></param>
 /// <param name="parameters"></param>
 /// <returns></returns>
 public static Object InvokeSnippetMethod(int assemblyHashCode, MethodBase methodInfo, Object[] parameters)
 {
     try
     {
         if (IsGuiThreadExecution(assemblyHashCode))
         {
             GuiInteractive guiUtils = new GuiInteractive();
             return(guiUtils.ReflectionInvoke(methodInfo, null, parameters));
         }
         else
         {
             return(methodInfo.Invoke(null, parameters));
         }
     }
     catch (Exception e)
     {
         if (e is TargetInvocationException && e.InnerException != null)
         {
             throw e.InnerException;
         }
         else
         {
             throw e;
         }
     }
 }
Exemple #2
0
 /// <summary>create a type</summary>
 /// <param name="type"></param>
 /// <param name="constructorInfo"></param>
 /// <param name="parameters"></param>
 /// <returns></returns>
 public static Object CreateInstance(Type type, ConstructorInfo constructorInfo, Object[] parameters)
 {
     try
     {
         if (InvokeRequired(null, type))
         {
             GuiInteractive guiUtils = new GuiInteractive();
             return(guiUtils.ReflectionInvoke(constructorInfo, type, parameters, (constructorInfo == null)));
         }
         else
         {
             if (constructorInfo != null)
             {
                 return(constructorInfo.Invoke(parameters));
             }
             else //default constructor
             {
                 return(type.Assembly.CreateInstance(type.FullName));
             }
         }
     }
     catch (Exception e)
     {
         if (e is TargetInvocationException && e.InnerException != null)
         {
             throw e.InnerException;
         }
         else
         {
             throw e;
         }
     }
 }
Exemple #3
0
        /// <summary>Set Property</summary>
        /// <param name="propInfo"></param>
        /// <param name="o"></param>
        /// <param name="index"></param>
        /// <param name="value"></param>
        public static void SetPropertyValue(PropertyInfo propInfo, Object o, object[] index, Object value)
        {
            try
            {
                Object castedValue = DynCast(value, propInfo.PropertyType);

                if (InvokeRequired(o, propInfo.ReflectedType))
                {
                    GuiInteractive guiUtils = new GuiInteractive();
                    guiUtils.ReflectionSet(propInfo, o, index, castedValue);
                }
                else
                {
                    propInfo.SetValue(o, castedValue, index);
                }
            }
            catch (Exception e)
            {
                if (e is TargetInvocationException && e.InnerException != null)
                {
                    throw e.InnerException;
                }
                else
                {
                    throw e;
                }
            }
        }
Exemple #4
0
 /// <summary>call method</summary>
 /// <param name="methodInfo"></param>
 /// <param name="value"></param>
 /// <param name="parameters"></param>
 /// <param name="alwaysGuiThread">if true,executed in GUI thread</param>
 /// <returns></returns>
 public static Object InvokeMethod(MethodBase methodInfo, Object obj, Object[] parameters, bool alwaysGuiThread)
 {
     try
     {
         if (InvokeRequired(obj, methodInfo.ReflectedType, alwaysGuiThread))
         {
             GuiInteractive guiUtils = new GuiInteractive();
             return(guiUtils.ReflectionInvoke(methodInfo, obj, parameters));
         }
         else
         {
             return(methodInfo.Invoke(obj, parameters));
         }
     }
     catch (Exception e)
     {
         if (e is TargetInvocationException && e.InnerException != null)
         {
             throw e.InnerException;
         }
         else
         {
             throw e;
         }
     }
 }
Exemple #5
0
 /// <summary>Get Property</summary>
 /// <param name="propInfo"></param>
 /// <param name="o"></param>
 /// <param name="index"></param>
 /// <returns></returns>
 public static Object GetPropertyValue(PropertyInfo propInfo, Object o, object[] index)
 {
     try
     {
         if (InvokeRequired(o, propInfo.ReflectedType))
         {
             GuiInteractive guiUtils = new GuiInteractive();
             return(guiUtils.ReflectionInvoke(propInfo, o, index));
         }
         else
         {
             return(propInfo.GetValue(o, index));
         }
     }
     catch (Exception e)
     {
         if (e is TargetInvocationException && e.InnerException != null)
         {
             throw e.InnerException;
         }
         else
         {
             throw e;
         }
     }
 }
Exemple #6
0
        /// <summary>
        ///   Show Dialog
        /// </summary>
        public virtual DialogResult openDialog()
        {
            DialogResult result = DialogResult.None;

            if (!Misc.IsGuiThread())
            {
                // always execute dialog opening code in GUI thread
                GuiInteractive guiUtils = new GuiInteractive();
                result = guiUtils.openDialog(this);
            }
            else
            {
#if !PocketPC
                //Create dummy form and pass it as owner,
                //otherwise while running through F7 dialog is not displayed
                var dummyForm = GuiUtilsBase.createDummyForm();
                dummyForm.Visible = false;
                GuiCommandQueue.getInstance().GuiThreadIsAvailableToProcessCommands = false;
                result = _form.ShowDialog(dummyForm);
                dummyForm.Close();
#else
                GuiCommandQueue.getInstance().GuiThreadIsAvailableToProcessCommands = false;
                result = _form.ShowDialog();
#endif
            }

            return(result);
        }
Exemple #7
0
        /// <summary>
        ///   Creates dialog for passed type of object by calling objects constructor matching the parameters
        /// </summary>
        /// <param name = "objType">type of object whose constructor to be invoked</param>
        /// <param name = "parameters">parameters to be passed to objects constructor</param>
        public void createDialog(Type objType, Object[] parameters)
        {
            if (!Misc.IsGuiThread())
            {
                // always execute dialog creation code in GUI thread
                GuiInteractive guiUtils = new GuiInteractive();
                guiUtils.createDialog(this, objType, parameters);
            }
            else
            {
                ConstructorInfo[] constructors = objType.GetConstructors();

                foreach (ConstructorInfo constructor in constructors)
                {
                    // TODO : We actually need to check the parameter type also
                    // but currently there is no such situation so lets not
                    // make this code more complex.
                    if (constructor.GetParameters().Length == parameters.Length)
                    {
                        _form = (Form)constructor.Invoke(parameters);
                        break;
                    }
                }
            }
        }
Exemple #8
0
 /// <summary>Get field</summary>
 /// <param name="fieldInfo"></param>
 /// <param name="o"></param>
 /// <returns></returns>
 public static Object GetFieldValue(FieldInfo fieldInfo, Object o)
 {
     if (InvokeRequired(o, fieldInfo.ReflectedType))
     {
         GuiInteractive guiUtils = new GuiInteractive();
         return(guiUtils.ReflectionInvoke(fieldInfo, o, null));
     }
     else
     {
         return(fieldInfo.GetValue(o));
     }
 }
Exemple #9
0
 /// <summary>
 ///   dispose(and close) the dialog
 /// </summary>
 public virtual void closeDialog()
 {
     if (!Misc.IsGuiThread())
     {
         // always execute dialog closing code in GUI thread
         GuiInteractive guiUtils = new GuiInteractive();
         guiUtils.closeDialog(this);
     }
     else
     {
         _form.Close();
     }
 }
Exemple #10
0
        /// <summary>Set field</summary>
        /// <param name="fieldInfo"></param>
        /// <param name="o"></param>
        /// <param name="value"></param>
        public static void SetFieldValue(FieldInfo fieldInfo, Object o, Object value)
        {
            Object castedValue = DynCast(value, fieldInfo.FieldType);

            if (InvokeRequired(o, fieldInfo.ReflectedType))
            {
                GuiInteractive guiUtils = new GuiInteractive();
                guiUtils.ReflectionSet(fieldInfo, o, null, castedValue);
            }
            else
            {
                fieldInfo.SetValue(o, castedValue);
            }
        }
Exemple #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="propInfo"></param>
        /// <param name="guiMgControl"></param>
        /// <param name="index"></param>
        /// <param name="value"></param>
        public static void SetPropertyValue(PropertyInfo propInfo, GuiMgControl guiMgControl, object[] index, Object value)
        {
            GuiInteractive guiUtils = new GuiInteractive();

            guiUtils.ReflectionSet(propInfo, guiMgControl, index, value);
        }