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
- LineSegment.cs
- XmlSchemaAttributeGroupRef.cs
- SessionStateUtil.cs
- FileDataSourceCache.cs
- Root.cs
- ValueQuery.cs
- PackUriHelper.cs
- securestring.cs
- MenuItemCollectionEditor.cs
- NativeActivityMetadata.cs
- DBAsyncResult.cs
- BuildProviderAppliesToAttribute.cs
- HandlerBase.cs
- XmlSecureResolver.cs
- TrustDriver.cs
- OrderedEnumerableRowCollection.cs
- StsCommunicationException.cs
- Comparer.cs
- SqlDataSourceParameterParser.cs
- IisTraceWebEventProvider.cs
- PointLightBase.cs
- EncryptedPackageFilter.cs
- WmfPlaceableFileHeader.cs
- MetadataResolver.cs
- PnrpPeerResolverElement.cs
- MimeParameterWriter.cs
- IndicShape.cs
- BaseTemplateBuildProvider.cs
- DbProviderFactories.cs
- XmlSchemaCompilationSettings.cs
- ProviderCommandInfoUtils.cs
- ActivityBuilder.cs
- AuthenticationSection.cs
- InitializeCorrelation.cs
- EventPropertyMap.cs
- BookmarkScope.cs
- CodeIterationStatement.cs
- WebBaseEventKeyComparer.cs
- OleDbDataReader.cs
- PresentationTraceSources.cs
- HtmlTextArea.cs
- RegisterResponseInfo.cs
- CompatibleIComparer.cs
- FontDialog.cs
- ColorDialog.cs
- WebDisplayNameAttribute.cs
- DateTimeConverter.cs
- DataGridViewCheckBoxCell.cs
- SoapObjectWriter.cs
- ObjectViewEntityCollectionData.cs
- LambdaCompiler.Logical.cs
- PipelineModuleStepContainer.cs
- AppDomainUnloadedException.cs
- ColorKeyFrameCollection.cs
- ItemsControlAutomationPeer.cs
- OneOfConst.cs
- BitmapEffectGeneralTransform.cs
- EventData.cs
- LinkLabelLinkClickedEvent.cs
- RemotingAttributes.cs
- BatchWriter.cs
- SqlConnectionString.cs
- ViewBase.cs
- ChameleonKey.cs
- EncryptedReference.cs
- DiscriminatorMap.cs
- WebPartConnectionCollection.cs
- CodeSnippetStatement.cs
- StringReader.cs
- ValidationSummary.cs
- AsymmetricKeyExchangeFormatter.cs
- WeakEventTable.cs
- ScrollBar.cs
- DBCommandBuilder.cs
- SiteMapSection.cs
- MetadataCache.cs
- ValueType.cs
- SystemColors.cs
- RegexTree.cs
- SqlBulkCopyColumnMappingCollection.cs
- SystemGatewayIPAddressInformation.cs
- RevocationPoint.cs
- _AutoWebProxyScriptEngine.cs
- RootAction.cs
- AxisAngleRotation3D.cs
- ItemsPanelTemplate.cs
- GenericsInstances.cs
- ADConnectionHelper.cs
- Serializer.cs
- MulticastDelegate.cs
- SoapServerMessage.cs
- AppLevelCompilationSectionCache.cs
- PolyLineSegmentFigureLogic.cs
- BooleanConverter.cs
- AddingNewEventArgs.cs
- BrushConverter.cs
- Translator.cs
- CustomWebEventKey.cs
- SkipStoryboardToFill.cs
- TextSchema.cs