Code:
/ 4.0 / 4.0 / 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;
///
/// 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);
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// 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);
}
}
}
}
}
// 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
- EdmTypeAttribute.cs
- CompiledRegexRunner.cs
- MenuItemBinding.cs
- ProcessHostMapPath.cs
- SpecialFolderEnumConverter.cs
- DataGrid.cs
- CryptoProvider.cs
- HwndHostAutomationPeer.cs
- WebPartEditorApplyVerb.cs
- ProfileBuildProvider.cs
- CheckBoxStandardAdapter.cs
- filewebresponse.cs
- MembershipUser.cs
- Switch.cs
- SafeLocalMemHandle.cs
- TabControlEvent.cs
- SafeEventHandle.cs
- SoapTypeAttribute.cs
- Ops.cs
- MeasureData.cs
- safex509handles.cs
- SecurityState.cs
- RelationshipWrapper.cs
- AtomEntry.cs
- XmlSchemaCompilationSettings.cs
- NumberSubstitution.cs
- ClickablePoint.cs
- UnaryExpression.cs
- DbCommandDefinition.cs
- PathFigureCollection.cs
- DataGridViewColumnEventArgs.cs
- GridViewCancelEditEventArgs.cs
- XmlDataSourceNodeDescriptor.cs
- DataRowExtensions.cs
- XmlSerializerVersionAttribute.cs
- SystemIPGlobalProperties.cs
- DocumentSchemaValidator.cs
- StorageConditionPropertyMapping.cs
- SerializationInfo.cs
- TriState.cs
- xmlfixedPageInfo.cs
- PathFigure.cs
- CultureInfoConverter.cs
- UIElement.cs
- PrintingPermissionAttribute.cs
- dbenumerator.cs
- AdornedElementPlaceholder.cs
- MetaTableHelper.cs
- ObjectViewListener.cs
- WmlSelectionListAdapter.cs
- MatrixTransform.cs
- XPathMessageContext.cs
- DesignerActionVerbList.cs
- Literal.cs
- ServicePointManagerElement.cs
- UIElementHelper.cs
- ConstraintStruct.cs
- WebPartDisplayModeEventArgs.cs
- SafeNativeMethodsCLR.cs
- AlgoModule.cs
- PngBitmapDecoder.cs
- CheckPair.cs
- CodeBinaryOperatorExpression.cs
- PageCopyCount.cs
- SspiNegotiationTokenProvider.cs
- SqlConnectionHelper.cs
- HyperLinkColumn.cs
- DataServices.cs
- RelationshipSet.cs
- DbConnectionPoolOptions.cs
- ToolboxItem.cs
- DataControlFieldHeaderCell.cs
- BaseTreeIterator.cs
- ListInitExpression.cs
- MachineKeyConverter.cs
- SqlClientWrapperSmiStreamChars.cs
- OrderedDictionary.cs
- FormsAuthenticationConfiguration.cs
- ArgumentElement.cs
- StylusOverProperty.cs
- DataBindingHandlerAttribute.cs
- XmlQueryContext.cs
- XamlVector3DCollectionSerializer.cs
- Dispatcher.cs
- ListControl.cs
- SQLGuidStorage.cs
- Typography.cs
- IPEndPoint.cs
- TypeHelper.cs
- ModelTreeEnumerator.cs
- DescendantBaseQuery.cs
- TaiwanCalendar.cs
- TextRenderingModeValidation.cs
- SwitchAttribute.cs
- AlternateView.cs
- Bold.cs
- StreamInfo.cs
- FlowDocumentReaderAutomationPeer.cs
- PropertyGeneratedEventArgs.cs
- Adorner.cs