Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / CompMod / System / ComponentModel / ArrayConverter.cs / 1305376 / ArrayConverter.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.ComponentModel { using Microsoft.Win32; using System.Collections; using System.Diagnostics; using System.Globalization; using System.Runtime.InteropServices; using System.Runtime.Remoting; using System.Runtime.Serialization.Formatters; using System.Security.Permissions; ////// [HostProtection(SharedState = true)] public class ArrayConverter : CollectionConverter { ///Provides a type converter to convert ////// objects to and from various other representations. /// public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType == null) { throw new ArgumentNullException("destinationType"); } if (destinationType == typeof(string)) { if (value is Array) { return SR.GetString(SR.ArrayConverterText, value.GetType().Name); } } return base.ConvertTo(context, culture, value, destinationType); } ///Converts the given value object to the specified destination type. ////// public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes) { PropertyDescriptor[] props = null; if (value.GetType().IsArray) { Array valueArray = (Array)value; int length = valueArray.GetLength(0); props = new PropertyDescriptor[length]; Type arrayType = value.GetType(); Type elementType = arrayType.GetElementType(); for (int i = 0; i < length; i++) { props[i] = new ArrayPropertyDescriptor(arrayType, elementType, i); } } return new PropertyDescriptorCollection(props); } ///Gets a collection of properties for the type of array /// specified by the value /// parameter. ////// public override bool GetPropertiesSupported(ITypeDescriptorContext context) { return true; } private class ArrayPropertyDescriptor : SimplePropertyDescriptor { private int index; public ArrayPropertyDescriptor(Type arrayType, Type elementType, int index) : base(arrayType, "[" + index + "]", elementType, null) { this.index = index; } public override object GetValue(object instance) { if (instance is Array) { Array array = (Array)instance; if (array.GetLength(0) > index) { return array.GetValue(index); } } return null; } public override void SetValue(object instance, object value) { if (instance is Array) { Array array = (Array)instance; if (array.GetLength(0) > index) { array.SetValue(value, index); } OnValueChanged(instance, EventArgs.Empty); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.Gets a value indicating whether this object /// supports properties. ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AsyncPostBackErrorEventArgs.cs
- WorkBatch.cs
- WebPartConnectionsCancelVerb.cs
- WebPartExportVerb.cs
- TabItem.cs
- ConnectionsZone.cs
- KnownTypesProvider.cs
- PerformanceCounterPermissionEntryCollection.cs
- NativeMethodsOther.cs
- NotEqual.cs
- TraceContextRecord.cs
- WebServiceData.cs
- AttributeCollection.cs
- TemplatePropertyEntry.cs
- ApplicationInterop.cs
- StrokeCollectionDefaultValueFactory.cs
- InstanceDescriptor.cs
- HttpRuntime.cs
- Label.cs
- AssemblyAttributesGoHere.cs
- DebugView.cs
- PreloadedPackages.cs
- BitmapEffectDrawing.cs
- WebPageTraceListener.cs
- BitmapEffectOutputConnector.cs
- CodeAttributeArgument.cs
- ResizeGrip.cs
- SamlAudienceRestrictionCondition.cs
- DocumentPage.cs
- Graph.cs
- DataControlFieldCollection.cs
- MethodBuilderInstantiation.cs
- TraceInternal.cs
- FormClosingEvent.cs
- ControlBindingsCollection.cs
- GroupBoxAutomationPeer.cs
- FormatterServices.cs
- NativeMethods.cs
- BuildProvidersCompiler.cs
- DetailsViewDeletedEventArgs.cs
- GrammarBuilderDictation.cs
- ConnectorEditor.cs
- CommonDialog.cs
- ResourceProviderFactory.cs
- EventMetadata.cs
- PeerToPeerException.cs
- BitmapEffectGroup.cs
- SettingsPropertyValueCollection.cs
- GridSplitterAutomationPeer.cs
- IntSecurity.cs
- UnmanagedMemoryStreamWrapper.cs
- WaitHandleCannotBeOpenedException.cs
- TextEvent.cs
- Cloud.cs
- AppModelKnownContentFactory.cs
- X509ChainPolicy.cs
- SecurityDescriptor.cs
- DataGridParentRows.cs
- GridViewColumn.cs
- DesignerActionTextItem.cs
- WebEncodingValidator.cs
- ExpressionWriter.cs
- EncoderParameters.cs
- DesignerTextViewAdapter.cs
- WebControl.cs
- Switch.cs
- InkPresenterAutomationPeer.cs
- PartManifestEntry.cs
- SmiConnection.cs
- CollectionBase.cs
- EntityObject.cs
- WorkflowControlEndpoint.cs
- ButtonAutomationPeer.cs
- MonikerHelper.cs
- WindowsTooltip.cs
- NameScope.cs
- RuleRefElement.cs
- RelativeSource.cs
- DataGridSortCommandEventArgs.cs
- PersistStreamTypeWrapper.cs
- ValidationSummary.cs
- NameValueFileSectionHandler.cs
- Shape.cs
- HttpCacheVary.cs
- RouteParameter.cs
- MenuItemStyle.cs
- RuntimeConfigLKG.cs
- IPEndPointCollection.cs
- AssemblyNameProxy.cs
- SerializationSectionGroup.cs
- DataBindingHandlerAttribute.cs
- WorkflowPrinting.cs
- WebUtil.cs
- BamlTreeMap.cs
- MinimizableAttributeTypeConverter.cs
- DesignerAttributeInfo.cs
- CssTextWriter.cs
- ItemsControl.cs
- ToolboxItem.cs
- ItemCheckedEvent.cs