Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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);
}
}
}
}
}
// 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
- TaskHelper.cs
- Emitter.cs
- BezierSegment.cs
- StreamUpdate.cs
- RootBuilder.cs
- XamlValidatingReader.cs
- DesignerVerb.cs
- SemanticBasicElement.cs
- httpserverutility.cs
- FontCacheUtil.cs
- ManagedWndProcTracker.cs
- PhysicalFontFamily.cs
- Brushes.cs
- figurelengthconverter.cs
- ChtmlFormAdapter.cs
- SqlCommand.cs
- ServiceInfoCollection.cs
- ReadWriteObjectLock.cs
- SByteStorage.cs
- Clipboard.cs
- AttributedMetaModel.cs
- StaticResourceExtension.cs
- AnnotationObservableCollection.cs
- EdgeModeValidation.cs
- VisemeEventArgs.cs
- RegexCode.cs
- RegexInterpreter.cs
- RepeaterItem.cs
- OdbcPermission.cs
- BrowserDefinitionCollection.cs
- Block.cs
- Ray3DHitTestResult.cs
- BaseDataList.cs
- FillErrorEventArgs.cs
- DBAsyncResult.cs
- RSATokenProvider.cs
- DataGridViewCellLinkedList.cs
- AbandonedMutexException.cs
- __TransparentProxy.cs
- regiisutil.cs
- TransformerInfoCollection.cs
- Control.cs
- ComponentChangedEvent.cs
- ScrollViewer.cs
- ResourceProviderFactory.cs
- SettingsPropertyValue.cs
- parserscommon.cs
- VisualTreeUtils.cs
- MergeFilterQuery.cs
- ImageCodecInfo.cs
- PipelineComponent.cs
- XmlParserContext.cs
- SQLMoney.cs
- XmlHelper.cs
- GridViewPageEventArgs.cs
- FloaterParagraph.cs
- FrameAutomationPeer.cs
- GridSplitter.cs
- LambdaExpression.cs
- mansign.cs
- RijndaelManaged.cs
- XPathChildIterator.cs
- _RequestCacheProtocol.cs
- CharAnimationBase.cs
- Floater.cs
- PeerTransportListenAddressValidator.cs
- HtmlInputImage.cs
- TextServicesLoader.cs
- TrailingSpaceComparer.cs
- EntityStoreSchemaFilterEntry.cs
- RouteItem.cs
- ApplicationInfo.cs
- CssStyleCollection.cs
- MonitoringDescriptionAttribute.cs
- XmlSerializationGeneratedCode.cs
- WorkflowIdleBehavior.cs
- SqlNodeAnnotation.cs
- versioninfo.cs
- EncodingNLS.cs
- Roles.cs
- FixUp.cs
- NullRuntimeConfig.cs
- ScriptManager.cs
- DecimalStorage.cs
- figurelength.cs
- Rule.cs
- UnaryNode.cs
- ConfigurationElementProperty.cs
- DispatcherExceptionEventArgs.cs
- CollectionViewGroup.cs
- AstNode.cs
- StoragePropertyMapping.cs
- XsltLoader.cs
- EdmTypeAttribute.cs
- BlurBitmapEffect.cs
- ImageAutomationPeer.cs
- SmtpTransport.cs
- XmlWriterTraceListener.cs
- MembershipSection.cs
- WebPartHeaderCloseVerb.cs