/// <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)); } }
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(); }