internal PropertySegmentPropertyInfo(System.Workflow.ComponentModel.Design.PropertySegment propertySegment, PropertyInfo realPropInfo)
 {
     this.realPropInfo = realPropInfo;
     this.propertySegment = propertySegment;
 }
 internal PropertySegmentPropertyInfo(System.Workflow.ComponentModel.Design.PropertySegment propertySegment, PropertyDescriptor realPropDesc)
 {
     this.realPropDesc = realPropDesc;
     this.propertySegment = propertySegment;
 }
Example #3
0
 internal PropertySegmentPropertyInfo(System.Workflow.ComponentModel.Design.PropertySegment propertySegment, PropertyDescriptor realPropDesc)
 {
     this.realPropDesc    = realPropDesc;
     this.propertySegment = propertySegment;
 }
Example #4
0
 internal PropertySegmentPropertyInfo(System.Workflow.ComponentModel.Design.PropertySegment propertySegment, PropertyInfo realPropInfo)
 {
     this.realPropInfo    = realPropInfo;
     this.propertySegment = propertySegment;
 }
Example #5
0
        public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture)
        {
            if (obj == null)
            {
                throw new ArgumentNullException("obj");
            }
            string name = this.Name;

            System.Workflow.ComponentModel.Design.PropertySegment segment = obj as System.Workflow.ComponentModel.Design.PropertySegment;
            if (((segment != null) ? (segment.Object as Activity) : (obj as Activity)) != null)
            {
                Type declaringType = this.DeclaringType;
                if (!string.IsNullOrEmpty(name) && (declaringType != null))
                {
                    DependencyProperty.FromName(name, declaringType);
                }
            }
            PropertyDescriptor descriptor = null;
            object             component  = null;

            if (segment != null)
            {
                PropertyDescriptorCollection properties = null;
                TypeConverter converter = TypeDescriptor.GetConverter(segment.Object);
                if ((converter != null) && converter.GetPropertiesSupported())
                {
                    DummyTypeDescriptorContext context = new DummyTypeDescriptorContext(segment.ServiceProvider, segment.Object, this.realPropDesc);
                    properties = converter.GetProperties(context, segment.Object, new Attribute[0]);
                }
                else
                {
                    properties = TypeDescriptor.GetProperties(segment.Object);
                }
                foreach (PropertyDescriptor descriptor2 in properties)
                {
                    if (descriptor2.Name == name)
                    {
                        descriptor = descriptor2;
                    }
                    else if (descriptor2.Converter != null)
                    {
                        DummyTypeDescriptorContext context2 = new DummyTypeDescriptorContext(segment.ServiceProvider, segment.Object, descriptor2);
                        if ((descriptor2.GetValue(segment.Object) != null) && descriptor2.Converter.GetPropertiesSupported(context2))
                        {
                            foreach (PropertyDescriptor descriptor3 in descriptor2.Converter.GetProperties(context2, descriptor2.GetValue(segment.Object), new Attribute[0]))
                            {
                                if (descriptor3.Name == name)
                                {
                                    descriptor = descriptor3;
                                }
                            }
                        }
                    }
                }
                component = segment.Object;
            }
            else
            {
                descriptor = TypeDescriptor.GetProperties(obj)[name];
                component  = obj;
            }
            if ((descriptor != null) && (component != null))
            {
                descriptor.SetValue(component, value);
            }
        }