Code:
/ FX-1434 / FX-1434 / 1.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;
///
/// Provides a type converter to convert
/// objects to and from various other representations.
///
[HostProtection(SharedState = true)]
public class ArrayConverter : CollectionConverter
{
///
/// Converts the given value object to the specified destination type.
///
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);
}
///
/// Gets a collection of properties for the type of array
/// specified by the value
/// parameter.
///
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 value indicating whether this object
/// supports properties.
///
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);
}
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToolStripLocationCancelEventArgs.cs
- MailWriter.cs
- DataControlLinkButton.cs
- SortedSet.cs
- PixelFormat.cs
- EmptyStringExpandableObjectConverter.cs
- Cloud.cs
- Win32KeyboardDevice.cs
- TrackBar.cs
- ConfigurationSettings.cs
- MetadataCache.cs
- ScopelessEnumAttribute.cs
- BitVector32.cs
- DropDownHolder.cs
- CodeConstructor.cs
- HandlerFactoryWrapper.cs
- OleDbConnection.cs
- ButtonField.cs
- FrameworkContextData.cs
- NameValuePermission.cs
- Material.cs
- ByteStreamGeometryContext.cs
- MonthCalendar.cs
- PageDeviceFont.cs
- RowBinding.cs
- RegexTree.cs
- SelectionEditor.cs
- RawStylusSystemGestureInputReport.cs
- SessionEndingCancelEventArgs.cs
- RealizationContext.cs
- UxThemeWrapper.cs
- MaterialGroup.cs
- SymLanguageType.cs
- InfoCardKeyedHashAlgorithm.cs
- AnalyzedTree.cs
- SimpleHandlerFactory.cs
- BitmapCodecInfoInternal.cs
- IdnMapping.cs
- XmlSiteMapProvider.cs
- Geometry3D.cs
- ExceptionUtility.cs
- TextSpan.cs
- HostedElements.cs
- TreeNodeMouseHoverEvent.cs
- GenericUriParser.cs
- ValuePatternIdentifiers.cs
- ColumnMapCopier.cs
- FilterException.cs
- XPathDocumentBuilder.cs
- RedirectionProxy.cs
- SendKeys.cs
- WeakEventManager.cs
- NameGenerator.cs
- Sentence.cs
- DependencyObjectCodeDomSerializer.cs
- Normalization.cs
- SessionStateUtil.cs
- TimelineCollection.cs
- ToolStripOverflowButton.cs
- RegexInterpreter.cs
- TextProperties.cs
- ScrollProviderWrapper.cs
- LazyTextWriterCreator.cs
- DataSourceCache.cs
- WorkItem.cs
- hresults.cs
- FlatButtonAppearance.cs
- PropertyValueChangedEvent.cs
- Msec.cs
- HandledEventArgs.cs
- QuotedStringWriteStateInfo.cs
- HttpErrorTraceRecord.cs
- CheckBox.cs
- HwndAppCommandInputProvider.cs
- PointLight.cs
- WebScriptEnablingElement.cs
- SiteMapNode.cs
- PathFigureCollection.cs
- TypeGenericEnumerableViewSchema.cs
- OleDbConnectionInternal.cs
- AxisAngleRotation3D.cs
- ToolStripLabel.cs
- precedingsibling.cs
- SafeBitVector32.cs
- TableChangeProcessor.cs
- MetadataResolver.cs
- XmlMapping.cs
- MethodBody.cs
- DecimalAnimationUsingKeyFrames.cs
- XPathChildIterator.cs
- ConnectionStringsSection.cs
- JoinCqlBlock.cs
- MemoryStream.cs
- Typeface.cs
- ConnectionOrientedTransportManager.cs
- SizeF.cs
- BamlLocalizableResource.cs
- AdCreatedEventArgs.cs
- MSAAEventDispatcher.cs
- JournalEntry.cs