Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / System / Windows / Markup / ArrayExtension.cs / 1 / 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
- HttpUnhandledOperationInvoker.cs
- TextEditorThreadLocalStore.cs
- TargetControlTypeAttribute.cs
- Rectangle.cs
- Overlapped.cs
- DataSourceCacheDurationConverter.cs
- DataGridViewUtilities.cs
- ProcessStartInfo.cs
- RemotingConfigParser.cs
- MatrixTransform.cs
- ReliabilityContractAttribute.cs
- TransactedBatchingBehavior.cs
- QilPatternVisitor.cs
- ClientRoleProvider.cs
- ScrollItemProviderWrapper.cs
- CommonDialog.cs
- DoubleLink.cs
- NameObjectCollectionBase.cs
- XmlSortKeyAccumulator.cs
- LockedAssemblyCache.cs
- _NTAuthentication.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- WmpBitmapEncoder.cs
- SystemResources.cs
- X509PeerCertificateElement.cs
- TemplateXamlParser.cs
- CodeTypeParameter.cs
- RijndaelManaged.cs
- MultipartIdentifier.cs
- DisplayInformation.cs
- CodeObjectCreateExpression.cs
- LinqDataSourceContextData.cs
- unsafenativemethodstextservices.cs
- TextSegment.cs
- ConnectivityStatus.cs
- WindowInteractionStateTracker.cs
- TimeZone.cs
- DataGridItem.cs
- UserNameSecurityTokenAuthenticator.cs
- UnsafePeerToPeerMethods.cs
- FileDialog.cs
- DataGridViewEditingControlShowingEventArgs.cs
- EntityViewGenerator.cs
- AddInBase.cs
- CommunicationException.cs
- ScrollData.cs
- IgnoreSectionHandler.cs
- PropertyValueUIItem.cs
- AnnotationComponentManager.cs
- HandlerFactoryCache.cs
- SiteMapProvider.cs
- EntityDataSourceUtil.cs
- NumericUpDown.cs
- JpegBitmapDecoder.cs
- Application.cs
- ClientScriptManager.cs
- KeyTime.cs
- ServicePointManager.cs
- SystemColors.cs
- UdpRetransmissionSettings.cs
- AuthenticationService.cs
- ProjectionCamera.cs
- TypeSemantics.cs
- Filter.cs
- DataGridItemEventArgs.cs
- DbDataRecord.cs
- CaseCqlBlock.cs
- DataGridViewComboBoxCell.cs
- SrgsSemanticInterpretationTag.cs
- ToolStripCodeDomSerializer.cs
- RuntimeConfigLKG.cs
- NCryptSafeHandles.cs
- KeyTimeConverter.cs
- DragDeltaEventArgs.cs
- DrawListViewItemEventArgs.cs
- BooleanKeyFrameCollection.cs
- NullableConverter.cs
- TextDecoration.cs
- ContainerUIElement3D.cs
- TileBrush.cs
- PrintDialog.cs
- MouseOverProperty.cs
- SessionEndedEventArgs.cs
- MatrixConverter.cs
- ILGen.cs
- TrustLevelCollection.cs
- StrokeRenderer.cs
- WebCategoryAttribute.cs
- fixedPageContentExtractor.cs
- CodeSubDirectoriesCollection.cs
- UIElementAutomationPeer.cs
- ProfessionalColors.cs
- ContextMenuAutomationPeer.cs
- CodeGenerator.cs
- CommentAction.cs
- Utils.cs
- HTTPNotFoundHandler.cs
- Unit.cs
- XomlDesignerLoader.cs
- ObjectCloneHelper.cs