Пример #1
0
        /// <summary>
        /// Creates a specialized class from a defined interface.
        /// </summary>
        /// <param name="iAction">Version 2.0 Action interface.</param>
        /// <returns>Specialized action class</returns>
        internal static Action CreateAction(V2Interop.IAction iAction)
        {
            switch (iAction.Type)
            {
            case TaskActionType.ComHandler:
                return(new ComHandlerAction((V2Interop.IComHandlerAction)iAction));

            case TaskActionType.SendEmail:
                return(new EmailAction((V2Interop.IEmailAction)iAction));

            case TaskActionType.ShowMessage:
                return(new ShowMessageAction((V2Interop.IShowMessageAction)iAction));

            case TaskActionType.Execute:
            default:
                return(new ExecAction((V2Interop.IExecAction)iAction));
            }
        }
Пример #2
0
        internal virtual void Bind(V2Interop.ITaskDefinition iTaskDef)
        {
            V2Interop.IActionCollection iActions = iTaskDef.Actions;

            switch (this.GetType().Name)
            {
            case "ComHandlerAction":
                iAction = iActions.Create(TaskActionType.ComHandler);
                break;

            case "ExecAction":
                iAction = iActions.Create(TaskActionType.Execute);
                break;

            case "EmailAction":
                iAction = iActions.Create(TaskActionType.SendEmail);
                break;

            case "ShowMessageAction":
                iAction = iActions.Create(TaskActionType.ShowMessage);
                break;

            default:
                throw new ArgumentException();
            }
            Marshal.ReleaseComObject(iActions);
            foreach (string key in unboundValues.Keys)
            {
                try
                {
                    iAction.GetType().InvokeMember(key, System.Reflection.BindingFlags.SetProperty, null, iAction, new object[] { unboundValues[key] });
                }
                catch (System.Reflection.TargetInvocationException tie) { throw tie.InnerException; }
                catch { }
            }
            unboundValues.Clear();
        }
Пример #3
0
 internal virtual void Bind(V2Interop.ITaskDefinition iTaskDef)
 {
     V2Interop.IActionCollection iActions = iTaskDef.Actions;
     switch (this.GetType().Name)
     {
         case "ComHandlerAction":
             iAction = iActions.Create(TaskActionType.ComHandler);
             break;
         case "ExecAction":
             iAction = iActions.Create(TaskActionType.Execute);
             break;
         case "EmailAction":
             iAction = iActions.Create(TaskActionType.SendEmail);
             break;
         case "ShowMessageAction":
             iAction = iActions.Create(TaskActionType.ShowMessage);
             break;
         default:
             throw new ArgumentException();
     }
     Marshal.ReleaseComObject(iActions);
     foreach (string key in unboundValues.Keys)
     {
         try
         {
             iAction.GetType().InvokeMember(key, System.Reflection.BindingFlags.SetProperty, null, iAction, new object[] { unboundValues[key] });
         }
         catch (System.Reflection.TargetInvocationException tie) { throw tie.InnerException; }
         catch { }
     }
     unboundValues.Clear();
 }