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
- UnlockCardRequest.cs
- DataColumnMappingCollection.cs
- OdbcEnvironment.cs
- ConstraintStruct.cs
- DataControlLinkButton.cs
- SessionState.cs
- OrthographicCamera.cs
- WebConfigurationManager.cs
- EntityViewGenerator.cs
- DateTimeParse.cs
- PtsHelper.cs
- UrlMapping.cs
- ProcessStartInfo.cs
- DESCryptoServiceProvider.cs
- CollectionBuilder.cs
- WindowPatternIdentifiers.cs
- SystemIPAddressInformation.cs
- CompensationParticipant.cs
- ProfileBuildProvider.cs
- TextRunTypographyProperties.cs
- HandlerWithFactory.cs
- CustomError.cs
- EventLogPermissionEntryCollection.cs
- WsdlBuildProvider.cs
- SecurityRuntime.cs
- CatalogZone.cs
- ThaiBuddhistCalendar.cs
- TextTreeObjectNode.cs
- MemberCollection.cs
- EventLogEntry.cs
- DataKey.cs
- RegexWorker.cs
- NetNamedPipeBindingCollectionElement.cs
- AppDomainUnloadedException.cs
- UnsafeNativeMethods.cs
- RoutedEventConverter.cs
- OdbcInfoMessageEvent.cs
- FixedTextBuilder.cs
- EventPropertyMap.cs
- HiddenField.cs
- HttpStreamMessage.cs
- DataControlLinkButton.cs
- WindowsListViewScroll.cs
- ParserStreamGeometryContext.cs
- DTCTransactionManager.cs
- DiscardableAttribute.cs
- HttpListenerContext.cs
- VersionedStream.cs
- ToolZone.cs
- ResolveCriteria11.cs
- FileFormatException.cs
- DataKeyCollection.cs
- TextServicesDisplayAttribute.cs
- DbgUtil.cs
- Effect.cs
- SqlCacheDependencySection.cs
- ElementUtil.cs
- RSAPKCS1KeyExchangeFormatter.cs
- DateTimeParse.cs
- WSSecureConversationDec2005.cs
- NavigationHelper.cs
- IPipelineRuntime.cs
- XsltContext.cs
- PermissionToken.cs
- PanelDesigner.cs
- ValidatingCollection.cs
- InstanceNameConverter.cs
- InternalDispatchObject.cs
- Encoder.cs
- SynchronizationContext.cs
- EditorPartChrome.cs
- PageParser.cs
- BitStack.cs
- NetworkInterface.cs
- CompoundFileDeflateTransform.cs
- WebPartConnection.cs
- PeerNameResolver.cs
- CompilerLocalReference.cs
- XPathCompiler.cs
- TemplateBindingExpression.cs
- TypeElement.cs
- _ListenerAsyncResult.cs
- BatchStream.cs
- AnnotationComponentManager.cs
- BaseCollection.cs
- Roles.cs
- PenContext.cs
- Exceptions.cs
- NativeObjectSecurity.cs
- HtmlToClrEventProxy.cs
- AttachedPropertyMethodSelector.cs
- CodeMemberProperty.cs
- _ShellExpression.cs
- AuthenticateEventArgs.cs
- PageParser.cs
- ProgressiveCrcCalculatingStream.cs
- OleDbTransaction.cs
- DesignerSerializationOptionsAttribute.cs
- PageParserFilter.cs
- MemoryRecordBuffer.cs