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; ////// [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. ///// 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
- ParagraphResult.cs
- ReflectPropertyDescriptor.cs
- XPathNavigatorReader.cs
- Int64KeyFrameCollection.cs
- FontWeights.cs
- DataGridHelper.cs
- MenuBindingsEditor.cs
- MarshalByRefObject.cs
- BatchParser.cs
- DocumentOrderComparer.cs
- DataTemplateSelector.cs
- SafeWaitHandle.cs
- PerformanceCounterPermission.cs
- XmlValidatingReaderImpl.cs
- ClientScriptManager.cs
- Properties.cs
- EnumUnknown.cs
- ExceptionUtil.cs
- CodeIndexerExpression.cs
- GroupBox.cs
- MsmqTransportElement.cs
- TrackingRecordPreFilter.cs
- Grant.cs
- TriggerBase.cs
- TailCallAnalyzer.cs
- DurationConverter.cs
- TraceListener.cs
- TrustManagerPromptUI.cs
- CompilerHelpers.cs
- TabControlEvent.cs
- documentsequencetextcontainer.cs
- WorkflowFileItem.cs
- MimeTypeMapper.cs
- XmlSchemaType.cs
- UniqueTransportManagerRegistration.cs
- StateWorkerRequest.cs
- ValueType.cs
- ProcessProtocolHandler.cs
- TaskFormBase.cs
- NodeInfo.cs
- GiveFeedbackEvent.cs
- DataGridViewTextBoxEditingControl.cs
- ResolveResponse.cs
- XmlSchemaType.cs
- TextTreeTextElementNode.cs
- _SslState.cs
- AdvancedBindingEditor.cs
- ConfigurationManagerInternalFactory.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- SerializableAttribute.cs
- ApplicationServicesHostFactory.cs
- CompiledAction.cs
- DataStorage.cs
- log.cs
- Cursors.cs
- EmptyImpersonationContext.cs
- objectresult_tresulttype.cs
- SecurityPermission.cs
- XmlSignificantWhitespace.cs
- HtmlInputPassword.cs
- BreakRecordTable.cs
- __Error.cs
- SubMenuStyle.cs
- BuildProviderAppliesToAttribute.cs
- XsltInput.cs
- MenuItemStyleCollection.cs
- SoundPlayerAction.cs
- ControlTemplate.cs
- UpDownBaseDesigner.cs
- ExtendedProperty.cs
- SettingsPropertyCollection.cs
- DropShadowEffect.cs
- DesignTimeTemplateParser.cs
- XPathNodeHelper.cs
- ByteArrayHelperWithString.cs
- ActionItem.cs
- Parameter.cs
- filewebrequest.cs
- SectionVisual.cs
- CancelEventArgs.cs
- InkCanvasInnerCanvas.cs
- CompilerTypeWithParams.cs
- HtmlSelect.cs
- PagesChangedEventArgs.cs
- MethodBuilderInstantiation.cs
- ConcurrentStack.cs
- OutputCacheSection.cs
- SafeFreeMibTable.cs
- InkCanvasSelectionAdorner.cs
- VisualStyleTypesAndProperties.cs
- SqlDependency.cs
- X509SecurityTokenProvider.cs
- MemoryFailPoint.cs
- BindingExpression.cs
- AcceleratedTokenProvider.cs
- TemplatedAdorner.cs
- UserValidatedEventArgs.cs
- FormatConvertedBitmap.cs
- CheckedListBox.cs
- ISAPIWorkerRequest.cs