Exemplo n.º 1
0
        protected override void OnActivityChanged(ActivityChangedEventArgs e)
        {
            Trace.WriteLine("ConnectorActivity - OnActivityChanged");

            base.OnActivityChanged(e);
            if (e.Member != null)
            {
                if (e.Member.Name == "Type")
                {
                    if (base.Activity.Site != null)
                    {
                        Activity           activity   = e.Activity;
                        PropertyDescriptor descriptor = TypeDescriptor.GetProperties(base.Activity)["MethodName"];
                        if (descriptor != null)
                        {
                            descriptor.SetValue(base.Activity, string.Empty);
                        }
                    }
                }
                else if (e.Member.Name == "MethodName")
                {
                    ConnectorActivity activity = e.Activity as ConnectorActivity;
                    if (activity != null)
                    {
                        activity.Parameters.Clear();

                        // refreshing corresponding ReturnActivity
                        if (activity.Parent != null)
                        {
                            foreach (Activity item in activity.Parent.Activities)
                            {
                                if ((item is ReturnActivity) && (((ReturnActivity)item).ConnectorActivityName == base.Activity.QualifiedName))
                                {
                                    (item as ReturnActivity).ConnectorActivityName = string.Empty;
                                    (item as ReturnActivity).Parameters.Clear();
                                    TypeDescriptor.Refresh(item);
                                }
                            }
                        }
                    }
                }
                if ((e.Member.Name == "Type") || (e.Member.Name == "MethodName"))
                {
                    TypeDescriptor.Refresh(e.Activity);
                }
            }
        }
Exemplo n.º 2
0
        protected override void PreFilterProperties(IDictionary properties)
        {
            base.PreFilterProperties(properties);
            ConnectorActivity activity = this.Activity as ConnectorActivity;

            if (activity != null && activity.Type != null && activity.MethodName != null)
            {
                MethodInfo mi = activity.Type.GetMethod(activity.MethodName);
                if (mi != null)
                {
                    //get the parameters and add them as properties
                    ParameterInfo[] pis = mi.GetParameters();
                    if (pis != null)
                    {
                        foreach (ParameterInfo pi in pis)
                        {
                            //add a new parameter
                            properties[pi.Name] = new ParameterBindingPropertyDescriptor <ConnectorActivity>(pi.Name, pi.ParameterType, new Attribute[] { new DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden), new BrowsableAttribute(true), new CategoryAttribute("Parameters"), new DescriptionAttribute(pi.ParameterType.FullName), new EditorAttribute(typeof(BindUITypeEditor), typeof(UITypeEditor)) });
                        }
                    }
                }
            }
        }