Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Markup / ArrayExtension.cs / 2 / ArrayExtension.cs
/****************************************************************************\ * * File: ArrayExtension.cs * * Class for Xaml markup extension for Arrays * * Copyright (C) 2004 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.Windows; using System.Collections; using System.ComponentModel; namespace System.Windows.Markup { ////// Class for Xaml markup extension for Arrays. /// [ContentProperty("Items")] [MarkupExtensionReturnType(typeof(Array))] public class ArrayExtension : MarkupExtension, IAddChild { ////// Constructor that takes no parameters. This creates an empty array. /// public ArrayExtension() { } ////// Constructor that takes one parameter. This initializes the type of the array. /// public ArrayExtension( Type arrayType) { if (arrayType == null) { throw new ArgumentNullException("arrayType"); } _arrayType = arrayType; } ////// Constructor for writing /// /// The array to write public ArrayExtension(Array elements) { _arrayList.AddRange(elements); _arrayType = elements.GetType().GetElementType(); } ////// Called to Add an object as a new array item. This will append the object to the end /// of the array. /// /// /// Object to add to the end of the array. /// public void AddChild(Object value) { _arrayList.Add(value); } ////// Called to Add a text as a new array item. This will append the object to the end /// of the array. /// /// /// Text to Add to the end of the array /// public void AddText(string text) { AddChild(text); } ////// Get and set the type of array to be created when calling ProvideValue /// [ConstructorArgument("type")] public Type Type { get { return _arrayType; } set { _arrayType = value; } } ////// An IList accessor to the contents of the array /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public IList Items { get { return _arrayList; } } ////// Return an array that is sized to the number of objects added to the ArrayExtension. /// /// Object that can provide services for the markup extension. ////// The Array containing all the objects added to this extension. /// public override object ProvideValue(IServiceProvider serviceProvider) { if (_arrayType == null) { throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionArrayType)); } object retArray = null; try { retArray = _arrayList.ToArray(_arrayType); } catch (System.InvalidCastException) { // If an element was added to the ArrayExtension that does not agree with the // ArrayType, then an InvalidCastException will occur. Generate a more // meaningful error for this case. throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionArrayBadType, _arrayType.Name)); } return retArray; } private ArrayList _arrayList = new ArrayList(); private Type _arrayType; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. /****************************************************************************\ * * File: ArrayExtension.cs * * Class for Xaml markup extension for Arrays * * Copyright (C) 2004 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.Windows; using System.Collections; using System.ComponentModel; namespace System.Windows.Markup { ////// Class for Xaml markup extension for Arrays. /// [ContentProperty("Items")] [MarkupExtensionReturnType(typeof(Array))] public class ArrayExtension : MarkupExtension, IAddChild { ////// Constructor that takes no parameters. This creates an empty array. /// public ArrayExtension() { } ////// Constructor that takes one parameter. This initializes the type of the array. /// public ArrayExtension( Type arrayType) { if (arrayType == null) { throw new ArgumentNullException("arrayType"); } _arrayType = arrayType; } ////// Constructor for writing /// /// The array to write public ArrayExtension(Array elements) { _arrayList.AddRange(elements); _arrayType = elements.GetType().GetElementType(); } ////// Called to Add an object as a new array item. This will append the object to the end /// of the array. /// /// /// Object to add to the end of the array. /// public void AddChild(Object value) { _arrayList.Add(value); } ////// Called to Add a text as a new array item. This will append the object to the end /// of the array. /// /// /// Text to Add to the end of the array /// public void AddText(string text) { AddChild(text); } ////// Get and set the type of array to be created when calling ProvideValue /// [ConstructorArgument("type")] public Type Type { get { return _arrayType; } set { _arrayType = value; } } ////// An IList accessor to the contents of the array /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public IList Items { get { return _arrayList; } } ////// Return an array that is sized to the number of objects added to the ArrayExtension. /// /// Object that can provide services for the markup extension. ////// The Array containing all the objects added to this extension. /// public override object ProvideValue(IServiceProvider serviceProvider) { if (_arrayType == null) { throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionArrayType)); } object retArray = null; try { retArray = _arrayList.ToArray(_arrayType); } catch (System.InvalidCastException) { // If an element was added to the ArrayExtension that does not agree with the // ArrayType, then an InvalidCastException will occur. Generate a more // meaningful error for this case. throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionArrayBadType, _arrayType.Name)); } return retArray; } private ArrayList _arrayList = new ArrayList(); private Type _arrayType; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SR.cs
- CrossContextChannel.cs
- CalendarDayButton.cs
- NavigationPropertySingletonExpression.cs
- VisualStyleTypesAndProperties.cs
- VisualTarget.cs
- DataGridViewColumnHeaderCell.cs
- CodeParameterDeclarationExpression.cs
- GAC.cs
- RawAppCommandInputReport.cs
- ToolboxCategory.cs
- RightsController.cs
- FullTextBreakpoint.cs
- WebPartConnectionsEventArgs.cs
- EmissiveMaterial.cs
- WindowsPrincipal.cs
- DocumentsTrace.cs
- XpsResourceDictionary.cs
- XmlNamespaceMapping.cs
- ExtendedProtectionPolicyTypeConverter.cs
- GridViewHeaderRowPresenter.cs
- RepeatBehaviorConverter.cs
- SqlRowUpdatingEvent.cs
- ConsumerConnectionPointCollection.cs
- XpsS0ValidatingLoader.cs
- PartialCachingControl.cs
- PrivateFontCollection.cs
- EqualityArray.cs
- MemoryStream.cs
- DataSourceDescriptorCollection.cs
- ContentValidator.cs
- ImmutableObjectAttribute.cs
- PropertySourceInfo.cs
- ConnectionManagementElement.cs
- UxThemeWrapper.cs
- SafeProcessHandle.cs
- StringSource.cs
- _DigestClient.cs
- ObjectDataSourceMethodEventArgs.cs
- MessageQueuePermissionAttribute.cs
- HtmlInputRadioButton.cs
- Authorization.cs
- ArraySubsetEnumerator.cs
- SqlCachedBuffer.cs
- Color.cs
- ParameterModifier.cs
- SiteMapNodeCollection.cs
- SqlDataAdapter.cs
- AppModelKnownContentFactory.cs
- ParseNumbers.cs
- RedistVersionInfo.cs
- Matrix.cs
- DataObjectEventArgs.cs
- CultureInfoConverter.cs
- AccessorTable.cs
- NativeCompoundFileAPIs.cs
- StylusLogic.cs
- FixedElement.cs
- CssTextWriter.cs
- XmlChildNodes.cs
- DBParameter.cs
- CellCreator.cs
- OdbcCommandBuilder.cs
- ToolStripInSituService.cs
- ModelProperty.cs
- MultipleViewPatternIdentifiers.cs
- SettingsAttributeDictionary.cs
- BooleanProjectedSlot.cs
- SelectionHighlightInfo.cs
- AbsoluteQuery.cs
- MetadataProperty.cs
- DataChangedEventManager.cs
- RegularExpressionValidator.cs
- XsdCachingReader.cs
- ReceiveCompletedEventArgs.cs
- SqlInternalConnection.cs
- AesManaged.cs
- WebPartDeleteVerb.cs
- InvalidDocumentContentsException.cs
- HttpFileCollection.cs
- WeakReadOnlyCollection.cs
- Exception.cs
- PageContentAsyncResult.cs
- DataServiceResponse.cs
- XamlStyleSerializer.cs
- ToolStripAdornerWindowService.cs
- Link.cs
- HWStack.cs
- BasicBrowserDialog.cs
- CodeTypeParameterCollection.cs
- AsyncOperationManager.cs
- OleDbDataReader.cs
- FragmentQuery.cs
- StandardToolWindows.cs
- PermissionSetEnumerator.cs
- XPathDocumentIterator.cs
- PointLight.cs
- WebPartZoneAutoFormat.cs
- SiteMapPath.cs
- SignatureToken.cs