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
- HwndProxyElementProvider.cs
- ToolStripDropDown.cs
- XmlTypeAttribute.cs
- EndPoint.cs
- ButtonColumn.cs
- TreeView.cs
- CodeTryCatchFinallyStatement.cs
- SmiRecordBuffer.cs
- FastPropertyAccessor.cs
- InplaceBitmapMetadataWriter.cs
- SmiEventSink.cs
- XPathSelfQuery.cs
- TabControlAutomationPeer.cs
- MetafileHeader.cs
- SqlProviderManifest.cs
- WindowsTab.cs
- InitializerFacet.cs
- TaskHelper.cs
- TokenBasedSet.cs
- DetailsViewCommandEventArgs.cs
- ByteViewer.cs
- BaseTemplatedMobileComponentEditor.cs
- ErrorHandlerModule.cs
- ConfigXmlSignificantWhitespace.cs
- DataBindingValueUIHandler.cs
- InvokeHandlers.cs
- SplayTreeNode.cs
- ApplicationBuildProvider.cs
- TabletDeviceInfo.cs
- BackgroundWorker.cs
- WhitespaceRuleReader.cs
- safelinkcollection.cs
- Throw.cs
- DoWorkEventArgs.cs
- Bits.cs
- GenericAuthenticationEventArgs.cs
- HtmlInputButton.cs
- WebPartMenuStyle.cs
- XmlReflectionMember.cs
- GradientStop.cs
- HierarchicalDataSourceControl.cs
- DataGridAddNewRow.cs
- UIPropertyMetadata.cs
- InvalidProgramException.cs
- StreamFormatter.cs
- SqlXmlStorage.cs
- SQLMoney.cs
- PackageRelationshipCollection.cs
- Mapping.cs
- Root.cs
- DataViewListener.cs
- FormViewUpdateEventArgs.cs
- SQLSingleStorage.cs
- dsa.cs
- MetadataSource.cs
- base64Transforms.cs
- ListItemCollection.cs
- Duration.cs
- SettingsPropertyWrongTypeException.cs
- XmlResolver.cs
- SafeEventHandle.cs
- BulletChrome.cs
- XamlGridLengthSerializer.cs
- MetaTableHelper.cs
- XamlStyleSerializer.cs
- lengthconverter.cs
- MessageBox.cs
- SqlNode.cs
- DbConnectionInternal.cs
- ProjectionCamera.cs
- SocketException.cs
- TypeDescriptor.cs
- WebPartsPersonalizationAuthorization.cs
- IntranetCredentialPolicy.cs
- DataSourceGroupCollection.cs
- ColorAnimationBase.cs
- DefaultCommandConverter.cs
- SocketInformation.cs
- DecoderExceptionFallback.cs
- InvalidPropValue.cs
- MemoryFailPoint.cs
- DataListItemEventArgs.cs
- Symbol.cs
- SQLBoolean.cs
- XamlSerializerUtil.cs
- PointLight.cs
- FilterFactory.cs
- InstanceData.cs
- ExternalException.cs
- TextEvent.cs
- OleDbTransaction.cs
- SHA512.cs
- SourceChangedEventArgs.cs
- AnimationTimeline.cs
- Cursor.cs
- StatusBarItemAutomationPeer.cs
- Decoder.cs
- SafeTokenHandle.cs
- OleDbError.cs
- CookieHandler.cs