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
- StateManagedCollection.cs
- PresentationAppDomainManager.cs
- XmlElementAttribute.cs
- XmlSchemaCollection.cs
- SqlBulkCopyColumnMapping.cs
- DecimalAnimationBase.cs
- SaveFileDialog.cs
- TimersDescriptionAttribute.cs
- InfoCardClaim.cs
- CollectionType.cs
- __FastResourceComparer.cs
- SqlTransaction.cs
- KnownTypes.cs
- ServicePointManager.cs
- XmlSchemaAttribute.cs
- RequestNavigateEventArgs.cs
- ValueSerializerAttribute.cs
- Rectangle.cs
- DbConnectionStringBuilder.cs
- TransformPattern.cs
- SpellerStatusTable.cs
- QilBinary.cs
- SiteMembershipCondition.cs
- BrowserCapabilitiesCodeGenerator.cs
- DiffuseMaterial.cs
- SchemaEntity.cs
- SemanticResultValue.cs
- ResourceContainer.cs
- AsyncMethodInvoker.cs
- ObjectNotFoundException.cs
- LiteralControl.cs
- NonVisualControlAttribute.cs
- ProcessModelSection.cs
- BitmapFrameEncode.cs
- DoubleAnimationBase.cs
- FixedElement.cs
- RegisteredScript.cs
- InvalidOleVariantTypeException.cs
- HMACSHA384.cs
- OdbcConnectionStringbuilder.cs
- WorkflowPersistenceContext.cs
- ObjectReferenceStack.cs
- TypedReference.cs
- IndexedGlyphRun.cs
- WebHttpBinding.cs
- OptimizerPatterns.cs
- MailAddressCollection.cs
- SqlUserDefinedTypeAttribute.cs
- SystemBrushes.cs
- ReflectionUtil.cs
- PasswordDeriveBytes.cs
- MainMenu.cs
- Thumb.cs
- ListItemParagraph.cs
- SQLCharsStorage.cs
- MonikerHelper.cs
- WebServiceErrorEvent.cs
- Win32Exception.cs
- AdPostCacheSubstitution.cs
- MatrixCamera.cs
- DoubleIndependentAnimationStorage.cs
- EmptyCollection.cs
- Pkcs7Signer.cs
- TextSpan.cs
- QueryInterceptorAttribute.cs
- XmlSchemaNotation.cs
- OdbcConnectionStringbuilder.cs
- AuthorizationPolicyTypeElementCollection.cs
- TypedTableBase.cs
- NamespaceEmitter.cs
- ToolCreatedEventArgs.cs
- Int16Storage.cs
- BitmapEffectState.cs
- LayoutEditorPart.cs
- GeometryValueSerializer.cs
- ViewGenResults.cs
- Highlights.cs
- ActivityTypeDesigner.xaml.cs
- IfAction.cs
- ZipIOLocalFileDataDescriptor.cs
- CloudCollection.cs
- SHA1CryptoServiceProvider.cs
- XmlQualifiedNameTest.cs
- Inline.cs
- BindableAttribute.cs
- SerializationEventsCache.cs
- CodeSnippetStatement.cs
- StackSpiller.Generated.cs
- PropertySourceInfo.cs
- Deserializer.cs
- SeverityFilter.cs
- SelectorAutomationPeer.cs
- SchemaAttDef.cs
- XmlEntityReference.cs
- XmlLoader.cs
- CallbackCorrelationInitializer.cs
- ConstrainedDataObject.cs
- ReferenceCountedObject.cs
- ConfigurationSectionCollection.cs
- NumberFormatInfo.cs