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
- TriState.cs
- StringUtil.cs
- TableRow.cs
- TemplateParser.cs
- CalendarDesigner.cs
- Cursor.cs
- IListConverters.cs
- FrameworkTemplate.cs
- SpotLight.cs
- AddressingVersion.cs
- WebPartCatalogCloseVerb.cs
- SqlDataSourceEnumerator.cs
- CultureTable.cs
- Profiler.cs
- ArraySubsetEnumerator.cs
- Hashtable.cs
- AnnotationStore.cs
- ArgumentOutOfRangeException.cs
- ThicknessAnimation.cs
- AssemblyBuilder.cs
- KeyPressEvent.cs
- OpenTypeCommon.cs
- xamlnodes.cs
- XPathNavigatorKeyComparer.cs
- WebControl.cs
- LinqDataSourceStatusEventArgs.cs
- TextTabProperties.cs
- WorkflowShape.cs
- WebPartDesigner.cs
- DocumentOutline.cs
- BitmapInitialize.cs
- ResourceDefaultValueAttribute.cs
- DependencyPropertyAttribute.cs
- UnsafeNativeMethods.cs
- PropertyChangingEventArgs.cs
- RegistrySecurity.cs
- BitmapVisualManager.cs
- ApplicationSecurityManager.cs
- HostingEnvironment.cs
- StyleCollection.cs
- BitmapPalettes.cs
- exports.cs
- Crc32.cs
- NumericUpDownAccelerationCollection.cs
- SchemaEntity.cs
- XmlSchemaGroupRef.cs
- DataControlLinkButton.cs
- WasHttpModulesInstallComponent.cs
- XmlElementCollection.cs
- ListDataBindEventArgs.cs
- BinaryUtilClasses.cs
- PathNode.cs
- TypedTableBase.cs
- MaskedTextBoxTextEditorDropDown.cs
- NameValueCollection.cs
- WorkflowMessageEventHandler.cs
- elementinformation.cs
- Error.cs
- METAHEADER.cs
- ByteKeyFrameCollection.cs
- WindowsAuthenticationModule.cs
- TextBox.cs
- XmlSchemaImporter.cs
- PropertiesTab.cs
- WebControlAdapter.cs
- FixedHyperLink.cs
- ControlAdapter.cs
- WmlListAdapter.cs
- Subtree.cs
- SerializationAttributes.cs
- FormsAuthenticationUserCollection.cs
- GlyphRunDrawing.cs
- DrawingContextWalker.cs
- CqlParserHelpers.cs
- ReferenceConverter.cs
- OutputCacheSection.cs
- GetImportFileNameRequest.cs
- DependencyPropertyConverter.cs
- SchemaRegistration.cs
- KeyPressEvent.cs
- nulltextnavigator.cs
- HttpHandlerAction.cs
- LogEntryHeaderv1Deserializer.cs
- ScrollBar.cs
- Matrix3DStack.cs
- CngKeyBlobFormat.cs
- TailPinnedEventArgs.cs
- WrapPanel.cs
- HttpRuntimeSection.cs
- BookmarkTable.cs
- GeneralTransform3DTo2D.cs
- DBBindings.cs
- UInt64.cs
- FileSystemEventArgs.cs
- GenericTypeParameterBuilder.cs
- SafeHGlobalHandleCritical.cs
- ItemCollection.cs
- SendMailErrorEventArgs.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- PartialList.cs