예제 #1
0
        internal PropertyInfo[] GetProperties(IServiceProvider serviceProvider)
        {
            ArrayList properties = new ArrayList(GetType().GetProperties());

            if (this.property != null)
            {
                properties.Add(new PropertySegmentPropertyInfo(this, this.property));
            }
            else if (this.propertyDescriptor != null)
            {
                properties.Add(new PropertySegmentPropertyInfo(this, this.propertyDescriptor));
            }
            else if (this.obj != null)
            {
                PropertyDescriptorCollection props = null;
                TypeConverter converter            = TypeDescriptor.GetConverter(this.obj);
                if (converter != null && converter.GetPropertiesSupported())
                {
                    DummyTypeDescriptorContext dummyContext = new DummyTypeDescriptorContext(this.serviceProvider, GetComponent(this.obj, serviceProvider), null);
                    props = converter.GetProperties(dummyContext, this.obj, new Attribute[] { });
                }
                else
                {
                    props = TypeDescriptor.GetProperties(this.obj);
                }

                foreach (PropertyDescriptor propDesc in props)
                {
                    PropertyInfo propInfo = XomlComponentSerializationService.GetProperty(this.obj.GetType(), propDesc.Name, BindingFlags.Public | BindingFlags.Instance);
                    if (propInfo != null)
                    {
                        if (Helpers.GetSerializationVisibility(propInfo) == DesignerSerializationVisibility.Hidden)
                        {
                            continue;
                        }

                        properties.Add(new PropertySegmentPropertyInfo(this, propInfo));
                    }
                    else
                    {
                        properties.Add(new PropertySegmentPropertyInfo(this, propDesc));
                        if (propDesc.Converter != null)
                        {
                            DummyTypeDescriptorContext dummyContext = new DummyTypeDescriptorContext(this.serviceProvider, GetComponent(this.obj, serviceProvider), propDesc);
                            if (propDesc.Converter.GetPropertiesSupported(dummyContext))
                            {
                                foreach (PropertyDescriptor childDesc in propDesc.Converter.GetProperties(dummyContext, this.obj, new Attribute[] { }))
                                {
                                    properties.Add(new PropertySegmentPropertyInfo(this, childDesc));
                                }
                            }
                        }
                    }
                }
            }

            return(properties.ToArray(typeof(PropertyInfo)) as PropertyInfo[]);
        }
예제 #2
0
        internal PropertyInfo[] GetProperties(IServiceProvider serviceProvider)
        {
            ArrayList list = new ArrayList(base.GetType().GetProperties());

            if (this.property != null)
            {
                list.Add(new PropertySegmentPropertyInfo(this, this.property));
            }
            else if (this.propertyDescriptor != null)
            {
                list.Add(new PropertySegmentPropertyInfo(this, this.propertyDescriptor));
            }
            else if (this.obj != null)
            {
                PropertyDescriptorCollection properties = null;
                TypeConverter converter = TypeDescriptor.GetConverter(this.obj);
                if ((converter != null) && converter.GetPropertiesSupported())
                {
                    DummyTypeDescriptorContext context = new DummyTypeDescriptorContext(this.serviceProvider, this.GetComponent(this.obj, serviceProvider), null);
                    properties = converter.GetProperties(context, this.obj, new Attribute[0]);
                }
                else
                {
                    properties = TypeDescriptor.GetProperties(this.obj);
                }
                foreach (System.ComponentModel.PropertyDescriptor descriptor in properties)
                {
                    PropertyInfo memberInfo = XomlComponentSerializationService.GetProperty(this.obj.GetType(), descriptor.Name, BindingFlags.Public | BindingFlags.Instance);
                    if (memberInfo != null)
                    {
                        if (Helpers.GetSerializationVisibility(memberInfo) != DesignerSerializationVisibility.Hidden)
                        {
                            list.Add(new PropertySegmentPropertyInfo(this, memberInfo));
                        }
                    }
                    else
                    {
                        list.Add(new PropertySegmentPropertyInfo(this, descriptor));
                        if (descriptor.Converter != null)
                        {
                            DummyTypeDescriptorContext context2 = new DummyTypeDescriptorContext(this.serviceProvider, this.GetComponent(this.obj, serviceProvider), descriptor);
                            if (descriptor.Converter.GetPropertiesSupported(context2))
                            {
                                foreach (System.ComponentModel.PropertyDescriptor descriptor2 in descriptor.Converter.GetProperties(context2, this.obj, new Attribute[0]))
                                {
                                    list.Add(new PropertySegmentPropertyInfo(this, descriptor2));
                                }
                            }
                        }
                    }
                }
            }
            return(list.ToArray(typeof(PropertyInfo)) as PropertyInfo[]);
        }
 internal PropertyInfo[] GetProperties(IServiceProvider serviceProvider)
 {
     ArrayList list = new ArrayList(base.GetType().GetProperties());
     if (this.property != null)
     {
         list.Add(new PropertySegmentPropertyInfo(this, this.property));
     }
     else if (this.propertyDescriptor != null)
     {
         list.Add(new PropertySegmentPropertyInfo(this, this.propertyDescriptor));
     }
     else if (this.obj != null)
     {
         PropertyDescriptorCollection properties = null;
         TypeConverter converter = TypeDescriptor.GetConverter(this.obj);
         if ((converter != null) && converter.GetPropertiesSupported())
         {
             DummyTypeDescriptorContext context = new DummyTypeDescriptorContext(this.serviceProvider, this.GetComponent(this.obj, serviceProvider), null);
             properties = converter.GetProperties(context, this.obj, new Attribute[0]);
         }
         else
         {
             properties = TypeDescriptor.GetProperties(this.obj);
         }
         foreach (System.ComponentModel.PropertyDescriptor descriptor in properties)
         {
             PropertyInfo memberInfo = XomlComponentSerializationService.GetProperty(this.obj.GetType(), descriptor.Name, BindingFlags.Public | BindingFlags.Instance);
             if (memberInfo != null)
             {
                 if (Helpers.GetSerializationVisibility(memberInfo) != DesignerSerializationVisibility.Hidden)
                 {
                     list.Add(new PropertySegmentPropertyInfo(this, memberInfo));
                 }
             }
             else
             {
                 list.Add(new PropertySegmentPropertyInfo(this, descriptor));
                 if (descriptor.Converter != null)
                 {
                     DummyTypeDescriptorContext context2 = new DummyTypeDescriptorContext(this.serviceProvider, this.GetComponent(this.obj, serviceProvider), descriptor);
                     if (descriptor.Converter.GetPropertiesSupported(context2))
                     {
                         foreach (System.ComponentModel.PropertyDescriptor descriptor2 in descriptor.Converter.GetProperties(context2, this.obj, new Attribute[0]))
                         {
                             list.Add(new PropertySegmentPropertyInfo(this, descriptor2));
                         }
                     }
                 }
             }
         }
     }
     return (list.ToArray(typeof(PropertyInfo)) as PropertyInfo[]);
 }
        public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture)
        {
            if (obj == null)
                throw new ArgumentNullException("obj");

            string propertyName = Name;

            DependencyProperty dependencyProperty = null;
            PropertySegment propertySegment = obj as PropertySegment;
            Activity activity = (propertySegment != null) ? propertySegment.Object as Activity : obj as Activity;
            if (activity != null)
            {
                Type propertyType = DeclaringType;
                if (!String.IsNullOrEmpty(propertyName) && propertyType != null)
                    dependencyProperty = DependencyProperty.FromName(propertyName, propertyType);
            }

            PropertyDescriptor propertyDescriptor = null;
            object destnObject = null;
            if (propertySegment != null)
            {
                PropertyDescriptorCollection props = null;
                TypeConverter converter = TypeDescriptor.GetConverter(propertySegment.Object);
                if (converter != null && converter.GetPropertiesSupported())
                {
                    DummyTypeDescriptorContext dummyContext = new DummyTypeDescriptorContext(propertySegment.ServiceProvider, propertySegment.Object, this.realPropDesc);
                    props = converter.GetProperties(dummyContext, propertySegment.Object, new Attribute[] { });
                }
                else
                    props = TypeDescriptor.GetProperties(propertySegment.Object);

                foreach (PropertyDescriptor propDesc in props)
                {
                    if (propDesc.Name == propertyName)
                    {
                        propertyDescriptor = propDesc;
                    }
                    else if (propDesc.Converter != null)
                    {
                        DummyTypeDescriptorContext dummyContext = new DummyTypeDescriptorContext(propertySegment.ServiceProvider, propertySegment.Object, propDesc);
                        if (propDesc.GetValue(propertySegment.Object) != null && propDesc.Converter.GetPropertiesSupported(dummyContext))
                        {
                            foreach (PropertyDescriptor childDesc in propDesc.Converter.GetProperties(dummyContext, propDesc.GetValue(propertySegment.Object), new Attribute[] { }))
                            {
                                if (childDesc.Name == propertyName)
                                    propertyDescriptor = childDesc;
                            }
                        }
                    }
                }

                destnObject = propertySegment.Object;
            }
            else
            {
                propertyDescriptor = TypeDescriptor.GetProperties(obj)[propertyName];
                destnObject = obj;
            }

            if (propertyDescriptor != null && destnObject != null)
                propertyDescriptor.SetValue(destnObject, value);
        }
        internal PropertyInfo[] GetProperties(IServiceProvider serviceProvider)
        {
            ArrayList properties = new ArrayList(GetType().GetProperties());

            if (this.property != null)
            {
                properties.Add(new PropertySegmentPropertyInfo(this, this.property));
            }
            else if (this.propertyDescriptor != null)
            {
                properties.Add(new PropertySegmentPropertyInfo(this, this.propertyDescriptor));
            }
            else if (this.obj != null)
            {
                PropertyDescriptorCollection props = null;
                TypeConverter converter = TypeDescriptor.GetConverter(this.obj);
                if (converter != null && converter.GetPropertiesSupported())
                {
                    DummyTypeDescriptorContext dummyContext = new DummyTypeDescriptorContext(this.serviceProvider, GetComponent(this.obj, serviceProvider), null);
                    props = converter.GetProperties(dummyContext, this.obj, new Attribute[] { });
                }
                else
                    props = TypeDescriptor.GetProperties(this.obj);

                foreach (PropertyDescriptor propDesc in props)
                {
                    PropertyInfo propInfo = XomlComponentSerializationService.GetProperty(this.obj.GetType(), propDesc.Name, BindingFlags.Public | BindingFlags.Instance);
                    if (propInfo != null)
                    {
                        if (Helpers.GetSerializationVisibility(propInfo) == DesignerSerializationVisibility.Hidden)
                            continue;

                        properties.Add(new PropertySegmentPropertyInfo(this, propInfo));
                    }
                    else
                    {
                        properties.Add(new PropertySegmentPropertyInfo(this, propDesc));
                        if (propDesc.Converter != null)
                        {
                            DummyTypeDescriptorContext dummyContext = new DummyTypeDescriptorContext(this.serviceProvider, GetComponent(this.obj, serviceProvider), propDesc);
                            if (propDesc.Converter.GetPropertiesSupported(dummyContext))
                            {
                                foreach (PropertyDescriptor childDesc in propDesc.Converter.GetProperties(dummyContext, this.obj, new Attribute[] { }))
                                {
                                    properties.Add(new PropertySegmentPropertyInfo(this, childDesc));
                                }
                            }
                        }
                    }
                }
            }

            return properties.ToArray(typeof(PropertyInfo)) as PropertyInfo[];
        }
예제 #6
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 propertyName = Name;

            DependencyProperty dependencyProperty = null;
            PropertySegment    propertySegment    = obj as PropertySegment;
            Activity           activity           = (propertySegment != null) ? propertySegment.Object as Activity : obj as Activity;

            if (activity != null)
            {
                Type propertyType = DeclaringType;
                if (!String.IsNullOrEmpty(propertyName) && propertyType != null)
                {
                    dependencyProperty = DependencyProperty.FromName(propertyName, propertyType);
                }
            }

            PropertyDescriptor propertyDescriptor = null;
            object             destnObject        = null;

            if (propertySegment != null)
            {
                PropertyDescriptorCollection props = null;
                TypeConverter converter            = TypeDescriptor.GetConverter(propertySegment.Object);
                if (converter != null && converter.GetPropertiesSupported())
                {
                    DummyTypeDescriptorContext dummyContext = new DummyTypeDescriptorContext(propertySegment.ServiceProvider, propertySegment.Object, this.realPropDesc);
                    props = converter.GetProperties(dummyContext, propertySegment.Object, new Attribute[] { });
                }
                else
                {
                    props = TypeDescriptor.GetProperties(propertySegment.Object);
                }

                foreach (PropertyDescriptor propDesc in props)
                {
                    if (propDesc.Name == propertyName)
                    {
                        propertyDescriptor = propDesc;
                    }
                    else if (propDesc.Converter != null)
                    {
                        DummyTypeDescriptorContext dummyContext = new DummyTypeDescriptorContext(propertySegment.ServiceProvider, propertySegment.Object, propDesc);
                        if (propDesc.GetValue(propertySegment.Object) != null && propDesc.Converter.GetPropertiesSupported(dummyContext))
                        {
                            foreach (PropertyDescriptor childDesc in propDesc.Converter.GetProperties(dummyContext, propDesc.GetValue(propertySegment.Object), new Attribute[] { }))
                            {
                                if (childDesc.Name == propertyName)
                                {
                                    propertyDescriptor = childDesc;
                                }
                            }
                        }
                    }
                }

                destnObject = propertySegment.Object;
            }
            else
            {
                propertyDescriptor = TypeDescriptor.GetProperties(obj)[propertyName];
                destnObject        = obj;
            }

            if (propertyDescriptor != null && destnObject != null)
            {
                propertyDescriptor.SetValue(destnObject, value);
            }
        }
 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);
     }
 }
예제 #8
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);
            }
        }