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
- safesecurityhelperavalon.cs
- TreeViewImageIndexConverter.cs
- InputProviderSite.cs
- SerialPort.cs
- Cursors.cs
- ToolStripRenderer.cs
- ListViewUpdateEventArgs.cs
- XmlDocumentFragment.cs
- Automation.cs
- CompositeCollection.cs
- TCPListener.cs
- SmiConnection.cs
- RuntimeCompatibilityAttribute.cs
- ObjectSet.cs
- CompositionCommandSet.cs
- Pair.cs
- ListViewGroupConverter.cs
- WindowsProgressbar.cs
- ImageFormat.cs
- HandleCollector.cs
- ListItemConverter.cs
- UInt64.cs
- SafeBitVector32.cs
- FileDetails.cs
- infer.cs
- TextControlDesigner.cs
- CompoundFileStreamReference.cs
- HtmlInputSubmit.cs
- XmlDataDocument.cs
- _TimerThread.cs
- DefaultObjectMappingItemCollection.cs
- SqlExpressionNullability.cs
- ToolStripItemCollection.cs
- DefaultParameterValueAttribute.cs
- DataTableReader.cs
- DocumentEventArgs.cs
- EditorPartCollection.cs
- CookieHandler.cs
- QueryTask.cs
- ListControlStringCollectionEditor.cs
- OdbcInfoMessageEvent.cs
- TextLine.cs
- XamlFigureLengthSerializer.cs
- httpstaticobjectscollection.cs
- Control.cs
- SecurityDocument.cs
- UserMapPath.cs
- ClientSettings.cs
- PolygonHotSpot.cs
- ObjectKeyFrameCollection.cs
- HScrollProperties.cs
- RemoteArgument.cs
- ResourceReader.cs
- DecoderExceptionFallback.cs
- XmlExceptionHelper.cs
- StructuredTypeEmitter.cs
- Point3DValueSerializer.cs
- CellParaClient.cs
- KeyFrames.cs
- LabelEditEvent.cs
- BookmarkInfo.cs
- SafeFindHandle.cs
- EventBuilder.cs
- Part.cs
- MSAAEventDispatcher.cs
- TextWriterTraceListener.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- JavaScriptSerializer.cs
- CompositeDuplexBindingElementImporter.cs
- InputMethodStateChangeEventArgs.cs
- IPHostEntry.cs
- CodeStatement.cs
- Semaphore.cs
- StateMachine.cs
- InfoCardAsymmetricCrypto.cs
- ThreadStartException.cs
- Int32.cs
- FormatConvertedBitmap.cs
- SystemEvents.cs
- SQLCharsStorage.cs
- ToolStripHighContrastRenderer.cs
- MulticastIPAddressInformationCollection.cs
- XmlSchemaGroupRef.cs
- SkinIDTypeConverter.cs
- DataControlPagerLinkButton.cs
- ProfileService.cs
- ResourcePermissionBaseEntry.cs
- SwitchAttribute.cs
- GrammarBuilderWildcard.cs
- SelectionItemProviderWrapper.cs
- Component.cs
- DataViewSetting.cs
- SecurityDocument.cs
- StringStorage.cs
- DataColumnMapping.cs
- EventRouteFactory.cs
- ListViewTableCell.cs
- HandleCollector.cs
- _TransmitFileOverlappedAsyncResult.cs
- TypeDescriptorFilterService.cs