Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / CompMod / System / ComponentModel / ArrayConverter.cs / 1 / 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); } } } } }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
- QueryHandler.cs
- RawMouseInputReport.cs
- LogSwitch.cs
- EnumDataContract.cs
- SqlPersonalizationProvider.cs
- SoapEnumAttribute.cs
- SQLMoneyStorage.cs
- EventLogSession.cs
- GradientStop.cs
- BindUriHelper.cs
- WorkItem.cs
- ToolStripItemRenderEventArgs.cs
- ComboBox.cs
- FormViewPageEventArgs.cs
- MediaElementAutomationPeer.cs
- RegexCode.cs
- BindingContext.cs
- MdiWindowListItemConverter.cs
- TreeNodeStyle.cs
- Terminate.cs
- TextEditorTyping.cs
- CellRelation.cs
- ConsumerConnectionPointCollection.cs
- SafeRegistryKey.cs
- Vector3D.cs
- PrintDialog.cs
- UrlMappingsSection.cs
- ListBoxAutomationPeer.cs
- MimePart.cs
- TargetFrameworkAttribute.cs
- TextEditorTyping.cs
- LinkedResourceCollection.cs
- Perspective.cs
- PaperSource.cs
- WindowsGraphics2.cs
- ObjectQueryExecutionPlan.cs
- CodeThrowExceptionStatement.cs
- ImageConverter.cs
- ComponentSerializationService.cs
- FixedTextView.cs
- PrintEvent.cs
- CommandBinding.cs
- Assembly.cs
- UriParserTemplates.cs
- CombinedGeometry.cs
- PolyBezierSegment.cs
- SchemaSetCompiler.cs
- BreakRecordTable.cs
- ReadOnlyHierarchicalDataSource.cs
- ContainerSelectorActiveEvent.cs
- SQLByte.cs
- ByteStorage.cs
- CompilerScope.Storage.cs
- RegexMatch.cs
- RelationshipDetailsCollection.cs
- Processor.cs
- ValueSerializer.cs
- SimpleWebHandlerParser.cs
- StylusLogic.cs
- KeyedByTypeCollection.cs
- ModuleBuilder.cs
- Scripts.cs
- NoResizeSelectionBorderGlyph.cs
- WaitForChangedResult.cs
- TextEndOfParagraph.cs
- DesignerForm.cs
- ViewGenResults.cs
- IIS7WorkerRequest.cs
- DataColumnCollection.cs
- HorizontalAlignConverter.cs
- OleStrCAMarshaler.cs
- MemberMaps.cs
- XamlInt32CollectionSerializer.cs
- FullTextLine.cs
- WindowsFont.cs
- MsmqIntegrationSecurity.cs
- Column.cs
- WebEventCodes.cs
- AsyncSerializedWorker.cs
- WindowsImpersonationContext.cs
- IPGlobalProperties.cs
- SourceSwitch.cs
- FakeModelItemImpl.cs
- Propagator.JoinPropagator.cs
- StructuredTypeEmitter.cs
- RegexNode.cs
- ProjectionPruner.cs
- XPathDocument.cs
- MailAddressCollection.cs
- SingleTagSectionHandler.cs
- CommonRemoteMemoryBlock.cs
- UnmanagedHandle.cs
- securitycriticaldataformultiplegetandset.cs
- StateManager.cs
- CodeAttachEventStatement.cs
- SqlWorkflowInstanceStoreLock.cs
- Nullable.cs
- PriorityChain.cs
- TableMethodGenerator.cs
- DragCompletedEventArgs.cs