Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / DynamicData / DynamicData / Util / DictionaryCustomTypeDescriptor.cs / 1305376 / DictionaryCustomTypeDescriptor.cs
namespace System.Web.DynamicData.Util { using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; internal class DictionaryCustomTypeDescriptor : CustomTypeDescriptor { private IDictionary_values; private PropertyDescriptorCollection _properties; public DictionaryCustomTypeDescriptor(IDictionary values) { if (values == null) { throw new ArgumentNullException("values"); } _values = values; } public object GetValue(string name) { object value; if (_values.TryGetValue(name, out value)) { return value; } return null; } public override PropertyDescriptorCollection GetProperties() { if (_properties == null) { var dictionaryProps = _values.Keys.Select(propName => new DictionaryPropertyDescriptor(propName)); _properties = new PropertyDescriptorCollection(dictionaryProps.ToArray()); } return _properties; } } internal class DictionaryPropertyDescriptor : PropertyDescriptor { public DictionaryPropertyDescriptor(string name) : base(name, null /* attrs */) { } public override bool CanResetValue(object component) { throw new NotSupportedException(); } public override Type ComponentType { get { throw new NotSupportedException(); } } public override object GetValue(object component) { // Try to cast the component to a DictionaryCustomTypeDescriptor and get the value in the dictonary // that corresponds to this property DictionaryCustomTypeDescriptor typeDescriptor = component as DictionaryCustomTypeDescriptor; if (typeDescriptor == null) { return null; } return typeDescriptor.GetValue(Name); } public override bool IsReadOnly { get { throw new NotSupportedException(); } } public override Type PropertyType { get { throw new NotSupportedException(); } } public override void ResetValue(object component) { throw new NotSupportedException(); } public override void SetValue(object component, object value) { throw new NotSupportedException(); } public override bool ShouldSerializeValue(object component) { throw new NotSupportedException(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Web.DynamicData.Util { using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; internal class DictionaryCustomTypeDescriptor : CustomTypeDescriptor { private IDictionary _values; private PropertyDescriptorCollection _properties; public DictionaryCustomTypeDescriptor(IDictionary values) { if (values == null) { throw new ArgumentNullException("values"); } _values = values; } public object GetValue(string name) { object value; if (_values.TryGetValue(name, out value)) { return value; } return null; } public override PropertyDescriptorCollection GetProperties() { if (_properties == null) { var dictionaryProps = _values.Keys.Select(propName => new DictionaryPropertyDescriptor(propName)); _properties = new PropertyDescriptorCollection(dictionaryProps.ToArray()); } return _properties; } } internal class DictionaryPropertyDescriptor : PropertyDescriptor { public DictionaryPropertyDescriptor(string name) : base(name, null /* attrs */) { } public override bool CanResetValue(object component) { throw new NotSupportedException(); } public override Type ComponentType { get { throw new NotSupportedException(); } } public override object GetValue(object component) { // Try to cast the component to a DictionaryCustomTypeDescriptor and get the value in the dictonary // that corresponds to this property DictionaryCustomTypeDescriptor typeDescriptor = component as DictionaryCustomTypeDescriptor; if (typeDescriptor == null) { return null; } return typeDescriptor.GetValue(Name); } public override bool IsReadOnly { get { throw new NotSupportedException(); } } public override Type PropertyType { get { throw new NotSupportedException(); } } public override void ResetValue(object component) { throw new NotSupportedException(); } public override void SetValue(object component, object value) { throw new NotSupportedException(); } public override bool ShouldSerializeValue(object component) { throw new NotSupportedException(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HttpProtocolImporter.cs
- ReadOnlyCollectionBase.cs
- XPathArrayIterator.cs
- __Filters.cs
- PerformanceCounterPermissionAttribute.cs
- ManifestResourceInfo.cs
- Error.cs
- PriorityRange.cs
- TransactionScope.cs
- StorageInfo.cs
- PropertyGridEditorPart.cs
- PlainXmlDeserializer.cs
- InputReport.cs
- TransformGroup.cs
- OutputCacheProfile.cs
- FilterRepeater.cs
- XamlVector3DCollectionSerializer.cs
- BooleanStorage.cs
- MimeXmlReflector.cs
- SimpleModelProvider.cs
- SoapFault.cs
- httpstaticobjectscollection.cs
- DataGridSortCommandEventArgs.cs
- DrawingCollection.cs
- OutputScopeManager.cs
- XmlSchemaGroup.cs
- RectangleHotSpot.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- Pen.cs
- CompilerWrapper.cs
- FastPropertyAccessor.cs
- FormViewInsertEventArgs.cs
- ContextStaticAttribute.cs
- GatewayDefinition.cs
- PowerEase.cs
- InstanceCompleteException.cs
- DbParameterCollection.cs
- DocumentReferenceCollection.cs
- GPPOINTF.cs
- WindowAutomationPeer.cs
- Triplet.cs
- XsltInput.cs
- PropertyItem.cs
- TypeElementCollection.cs
- InstallerTypeAttribute.cs
- Camera.cs
- SmtpClient.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- ProxyAttribute.cs
- ContainsRowNumberChecker.cs
- ImageDrawing.cs
- ComplexPropertyEntry.cs
- brushes.cs
- CompModHelpers.cs
- DataSourceSelectArguments.cs
- LineServices.cs
- DESCryptoServiceProvider.cs
- Compiler.cs
- BuilderPropertyEntry.cs
- Evaluator.cs
- _RequestCacheProtocol.cs
- DocumentSchemaValidator.cs
- FormConverter.cs
- AutomationPeer.cs
- ObjectDataSourceMethodEventArgs.cs
- KerberosRequestorSecurityToken.cs
- InputScope.cs
- TextParagraphView.cs
- SecurityTokenRequirement.cs
- BeginEvent.cs
- MultiPageTextView.cs
- MembershipSection.cs
- SequentialOutput.cs
- SafeProcessHandle.cs
- HealthMonitoringSection.cs
- ControlParameter.cs
- WhiteSpaceTrimStringConverter.cs
- ApplicationFileParser.cs
- InteropAutomationProvider.cs
- PrintController.cs
- Vector3dCollection.cs
- TempEnvironment.cs
- SetStateDesigner.cs
- PolyQuadraticBezierSegment.cs
- UnsafeNativeMethods.cs
- Sequence.cs
- TextRenderer.cs
- Funcletizer.cs
- DataGridCellInfo.cs
- EntityDataSourceStatementEditor.cs
- TypeUtils.cs
- EntityException.cs
- MimeTypePropertyAttribute.cs
- CommonProperties.cs
- CallSiteBinder.cs
- SmtpDigestAuthenticationModule.cs
- DynamicControlParameter.cs
- ItemContainerGenerator.cs
- BitmapCodecInfoInternal.cs
- SessionSwitchEventArgs.cs