Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / Model / ModelPropertyCollectionImpl.cs / 1305376 / ModelPropertyCollectionImpl.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Presentation.Model { using System.Collections.Generic; using System.Activities.Presentation.View; using System.ComponentModel; using System.IO; using System.Linq; // This provides a container for model properties of a modelItem. // This uses the TypeDescriptor.GetProperties() instead of using reflection // to get the properties of a model item. So any model instance implementing ICustomTypeProvider // is automatically taken care of. class ModelPropertyCollectionImpl : ModelPropertyCollection { ModelItem parent; bool createFakeModelProperties; public ModelPropertyCollectionImpl(ModelItem parent) { this.parent = parent; createFakeModelProperties = this.parent is FakeModelItemImpl; } public override IEnumeratorGetEnumerator() { foreach (PropertyDescriptor propertyDescriptor in GetPropertyDescriptors()) { yield return CreateProperty(parent, propertyDescriptor); } } protected override ModelProperty Find(System.Windows.DependencyProperty value, bool throwOnError ) { // We dont support dependency properties. if (throwOnError) { throw FxTrace.Exception.AsError(new NotSupportedException()); } else { return null; } } protected override ModelProperty Find(string name, bool throwOnError) { PropertyDescriptor propertyDescriptor = GetPropertyDescriptors()[name]; if (propertyDescriptor != null) { return CreateProperty(parent, propertyDescriptor); } return null; } ModelProperty CreateProperty(ModelItem parent, PropertyDescriptor propertyDescriptor) { bool isAttached = propertyDescriptor is AttachedPropertyDescriptor; return this.createFakeModelProperties ? (ModelProperty)(new FakeModelPropertyImpl((FakeModelItemImpl)parent, propertyDescriptor)) : (ModelProperty)(new ModelPropertyImpl(parent, propertyDescriptor,isAttached)); } PropertyDescriptorCollection GetPropertyDescriptors() { PropertyDescriptorCollection propertyDescriptors = PropertyDescriptorCollection.Empty; try { object instance = parent.GetCurrentValue(); if (instance != null) { if (!(instance is ICustomTypeDescriptor)) { Type instanceType = instance.GetType(); if (instanceType.IsValueType) { propertyDescriptors = TypeDescriptor.GetProvider(instanceType).GetTypeDescriptor(instanceType).GetProperties(); } else { propertyDescriptors = TypeDescriptor.GetProvider(instance).GetTypeDescriptor(instance).GetProperties(); } } else { propertyDescriptors = TypeDescriptor.GetProperties(instance); } } // Add browsable attached properties AttachedPropertiesService AttachedPropertiesService = this.parent.GetEditingContext().Services.GetService (); if (AttachedPropertiesService != null) { var browsableAttachedProperties = from attachedProperty in AttachedPropertiesService.GetAttachedProperties(this.parent.ItemType) where attachedProperty.IsBrowsable select new AttachedPropertyDescriptor(attachedProperty, this.parent); List mergedProperties = new List (); foreach (PropertyDescriptor propertyDescriptor in propertyDescriptors) { mergedProperties.Add(propertyDescriptor); } propertyDescriptors = new PropertyDescriptorCollection(mergedProperties.Concat(browsableAttachedProperties).ToArray(), true); } } catch (FileNotFoundException e) { EditingContext context = parent.GetEditingContext(); if (context.Items.GetValue () == null) { context.Items.SetValue(new ErrorItem { Message = e.Message, Details = e.ToString() }); } } return propertyDescriptors; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Presentation.Model { using System.Collections.Generic; using System.Activities.Presentation.View; using System.ComponentModel; using System.IO; using System.Linq; // This provides a container for model properties of a modelItem. // This uses the TypeDescriptor.GetProperties() instead of using reflection // to get the properties of a model item. So any model instance implementing ICustomTypeProvider // is automatically taken care of. class ModelPropertyCollectionImpl : ModelPropertyCollection { ModelItem parent; bool createFakeModelProperties; public ModelPropertyCollectionImpl(ModelItem parent) { this.parent = parent; createFakeModelProperties = this.parent is FakeModelItemImpl; } public override IEnumerator GetEnumerator() { foreach (PropertyDescriptor propertyDescriptor in GetPropertyDescriptors()) { yield return CreateProperty(parent, propertyDescriptor); } } protected override ModelProperty Find(System.Windows.DependencyProperty value, bool throwOnError ) { // We dont support dependency properties. if (throwOnError) { throw FxTrace.Exception.AsError(new NotSupportedException()); } else { return null; } } protected override ModelProperty Find(string name, bool throwOnError) { PropertyDescriptor propertyDescriptor = GetPropertyDescriptors()[name]; if (propertyDescriptor != null) { return CreateProperty(parent, propertyDescriptor); } return null; } ModelProperty CreateProperty(ModelItem parent, PropertyDescriptor propertyDescriptor) { bool isAttached = propertyDescriptor is AttachedPropertyDescriptor; return this.createFakeModelProperties ? (ModelProperty)(new FakeModelPropertyImpl((FakeModelItemImpl)parent, propertyDescriptor)) : (ModelProperty)(new ModelPropertyImpl(parent, propertyDescriptor,isAttached)); } PropertyDescriptorCollection GetPropertyDescriptors() { PropertyDescriptorCollection propertyDescriptors = PropertyDescriptorCollection.Empty; try { object instance = parent.GetCurrentValue(); if (instance != null) { if (!(instance is ICustomTypeDescriptor)) { Type instanceType = instance.GetType(); if (instanceType.IsValueType) { propertyDescriptors = TypeDescriptor.GetProvider(instanceType).GetTypeDescriptor(instanceType).GetProperties(); } else { propertyDescriptors = TypeDescriptor.GetProvider(instance).GetTypeDescriptor(instance).GetProperties(); } } else { propertyDescriptors = TypeDescriptor.GetProperties(instance); } } // Add browsable attached properties AttachedPropertiesService AttachedPropertiesService = this.parent.GetEditingContext().Services.GetService (); if (AttachedPropertiesService != null) { var browsableAttachedProperties = from attachedProperty in AttachedPropertiesService.GetAttachedProperties(this.parent.ItemType) where attachedProperty.IsBrowsable select new AttachedPropertyDescriptor(attachedProperty, this.parent); List mergedProperties = new List (); foreach (PropertyDescriptor propertyDescriptor in propertyDescriptors) { mergedProperties.Add(propertyDescriptor); } propertyDescriptors = new PropertyDescriptorCollection(mergedProperties.Concat(browsableAttachedProperties).ToArray(), true); } } catch (FileNotFoundException e) { EditingContext context = parent.GetEditingContext(); if (context.Items.GetValue () == null) { context.Items.SetValue(new ErrorItem { Message = e.Message, Details = e.ToString() }); } } return propertyDescriptors; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RectAnimationBase.cs
- StreamUpgradeBindingElement.cs
- TextCompositionEventArgs.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- EnlistmentTraceIdentifier.cs
- SortKey.cs
- ComboBoxItem.cs
- InstanceDataCollectionCollection.cs
- TreeNodeStyleCollection.cs
- OleDbParameterCollection.cs
- Application.cs
- IndicCharClassifier.cs
- ToolStripDropDown.cs
- BrowsableAttribute.cs
- ArrangedElementCollection.cs
- CompilationUtil.cs
- OuterGlowBitmapEffect.cs
- InputBinding.cs
- ResourceBinder.cs
- ButtonStandardAdapter.cs
- DataRowChangeEvent.cs
- ControlPager.cs
- XmlSchemaChoice.cs
- BrowserCapabilitiesFactoryBase.cs
- JsonMessageEncoderFactory.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- DetailsViewUpdateEventArgs.cs
- ValueOfAction.cs
- TextServicesManager.cs
- AuthenticationModuleElement.cs
- ProxyGenerator.cs
- BevelBitmapEffect.cs
- PropertyGridCommands.cs
- EntityException.cs
- Transform.cs
- ResourcePart.cs
- MarkupCompiler.cs
- Helpers.cs
- HighContrastHelper.cs
- SecurityTokenSerializer.cs
- EventLogPermissionAttribute.cs
- UrlPropertyAttribute.cs
- DPCustomTypeDescriptor.cs
- WebPartVerb.cs
- Stopwatch.cs
- SerializerDescriptor.cs
- CodeSnippetCompileUnit.cs
- BasePattern.cs
- ByteAnimationUsingKeyFrames.cs
- PriorityRange.cs
- InvokeMethod.cs
- PageThemeParser.cs
- MultipartContentParser.cs
- NetworkStream.cs
- HasCopySemanticsAttribute.cs
- SystemTcpConnection.cs
- AddToCollection.cs
- OleDbWrapper.cs
- COM2ExtendedBrowsingHandler.cs
- ApplicationActivator.cs
- CodeIdentifier.cs
- Merger.cs
- HttpFileCollectionBase.cs
- WsdlBuildProvider.cs
- SignedInfo.cs
- CollaborationHelperFunctions.cs
- XamlParser.cs
- LocalizedNameDescriptionPair.cs
- FrameworkElementAutomationPeer.cs
- TextRenderer.cs
- RequestCachePolicy.cs
- UserControlFileEditor.cs
- ClientBuildManagerCallback.cs
- OneOfTypeConst.cs
- TableLayoutRowStyleCollection.cs
- MimeBasePart.cs
- SR.Designer.cs
- LineUtil.cs
- PermissionListSet.cs
- RuleRefElement.cs
- StringSource.cs
- FileNameEditor.cs
- CurrentTimeZone.cs
- WindowsGraphicsWrapper.cs
- Mapping.cs
- Int64.cs
- CacheEntry.cs
- precedingquery.cs
- FullTextBreakpoint.cs
- NamespaceMapping.cs
- ScrollableControl.cs
- AQNBuilder.cs
- TypeBinaryExpression.cs
- RectangleConverter.cs
- DrawingImage.cs
- InlineObject.cs
- DrawingAttributesDefaultValueFactory.cs
- DesignTimeParseData.cs
- Graph.cs
- SplineQuaternionKeyFrame.cs