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
- InputBinding.cs
- Scene3D.cs
- TrustSection.cs
- OpenFileDialog.cs
- UriWriter.cs
- DocumentViewerAutomationPeer.cs
- ChtmlTextWriter.cs
- BindToObject.cs
- CipherData.cs
- ThemeConfigurationDialog.cs
- Rotation3DKeyFrameCollection.cs
- DocumentsTrace.cs
- BitmapMetadata.cs
- LiteralTextParser.cs
- ImpersonateTokenRef.cs
- DataTablePropertyDescriptor.cs
- ObjectIDGenerator.cs
- StrokeNodeEnumerator.cs
- DataServiceQueryProvider.cs
- DataGridSortingEventArgs.cs
- WbemException.cs
- PathStreamGeometryContext.cs
- ClientFormsAuthenticationMembershipProvider.cs
- InternalPermissions.cs
- ColumnCollectionEditor.cs
- TextSpanModifier.cs
- SR.Designer.cs
- HandlerFactoryWrapper.cs
- IxmlLineInfo.cs
- CodeObjectCreateExpression.cs
- TableAdapterManagerNameHandler.cs
- CodeRemoveEventStatement.cs
- ArrayElementGridEntry.cs
- DeleteMemberBinder.cs
- WindowsFormsHostPropertyMap.cs
- NamedPermissionSet.cs
- WindowsFormsSectionHandler.cs
- MachineKeySection.cs
- XmlText.cs
- DataGridViewLayoutData.cs
- FontFamily.cs
- BaseValidatorDesigner.cs
- CheckBox.cs
- ObjectAssociationEndMapping.cs
- WebPartTransformer.cs
- XmlSchemaException.cs
- ProxyManager.cs
- SessionStateSection.cs
- AstNode.cs
- NativeMethods.cs
- EntityStoreSchemaFilterEntry.cs
- MetafileHeader.cs
- GeneralTransform2DTo3D.cs
- PersonalizablePropertyEntry.cs
- DecoderExceptionFallback.cs
- DataGridViewTextBoxColumn.cs
- SystemIPGlobalStatistics.cs
- ModelTreeEnumerator.cs
- ItemsControl.cs
- CheckBox.cs
- TreeNode.cs
- CodeDirectiveCollection.cs
- CodeExpressionStatement.cs
- XmlHierarchicalDataSourceView.cs
- HtmlInputHidden.cs
- OdbcParameter.cs
- SecurityDocument.cs
- AssociationTypeEmitter.cs
- _DomainName.cs
- TransformerConfigurationWizardBase.cs
- ConfigXmlAttribute.cs
- WsdlBuildProvider.cs
- DialogResultConverter.cs
- BamlWriter.cs
- MsmqVerifier.cs
- DataGridViewCellPaintingEventArgs.cs
- MSAANativeProvider.cs
- WebAdminConfigurationHelper.cs
- CodeIterationStatement.cs
- EdgeProfileValidation.cs
- HttpCachePolicy.cs
- DataObjectFieldAttribute.cs
- ModulesEntry.cs
- GroupDescription.cs
- DecoderBestFitFallback.cs
- SecurityChannelListener.cs
- VBIdentifierNameEditor.cs
- ListViewTableRow.cs
- TypeContext.cs
- SmiContextFactory.cs
- SplineKeyFrames.cs
- cookiecollection.cs
- LineBreak.cs
- SoapMessage.cs
- DbConnectionPool.cs
- InlineUIContainer.cs
- DoubleLink.cs
- ListControl.cs
- CursorConverter.cs
- InkCanvasSelection.cs