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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- diagnosticsswitches.cs
- XmlAttribute.cs
- AudioFileOut.cs
- HttpDictionary.cs
- XmlSchemaValidator.cs
- XmlSchemaParticle.cs
- MultipleFilterMatchesException.cs
- UIElementAutomationPeer.cs
- Nullable.cs
- SchemaMapping.cs
- InternalException.cs
- GridSplitterAutomationPeer.cs
- ReplyAdapterChannelListener.cs
- OracleRowUpdatedEventArgs.cs
- NullEntityWrapper.cs
- ResourceExpressionBuilder.cs
- UserNamePasswordValidator.cs
- AccessDataSourceWizardForm.cs
- DBAsyncResult.cs
- Tokenizer.cs
- SBCSCodePageEncoding.cs
- ResourceExpressionBuilder.cs
- _ContextAwareResult.cs
- ResourceManagerWrapper.cs
- ClientBuildManagerCallback.cs
- PointCollectionValueSerializer.cs
- RecordsAffectedEventArgs.cs
- RelAssertionDirectKeyIdentifierClause.cs
- InputBinding.cs
- HttpCacheParams.cs
- ConsumerConnectionPointCollection.cs
- CalendarDateRangeChangingEventArgs.cs
- BackgroundWorker.cs
- SByteStorage.cs
- ServiceDescription.cs
- EventlogProvider.cs
- SingleSelectRootGridEntry.cs
- CodeMemberField.cs
- QilFactory.cs
- HTMLTagNameToTypeMapper.cs
- StateManagedCollection.cs
- IxmlLineInfo.cs
- SystemIPAddressInformation.cs
- TypeSystem.cs
- ISO2022Encoding.cs
- X509ChainPolicy.cs
- MenuItemBinding.cs
- TypefaceCollection.cs
- ChangeInterceptorAttribute.cs
- Decoder.cs
- DbParameterHelper.cs
- EpmSourcePathSegment.cs
- UdpSocket.cs
- Label.cs
- TreeView.cs
- DataGridRelationshipRow.cs
- CollectionContainer.cs
- ToolStripDropDownClosingEventArgs.cs
- ListManagerBindingsCollection.cs
- ToolboxDataAttribute.cs
- ExtenderControl.cs
- Repeater.cs
- WebPartUtil.cs
- SevenBitStream.cs
- StreamAsIStream.cs
- SettingsPropertyValue.cs
- ErrorCodes.cs
- NgenServicingAttributes.cs
- Decimal.cs
- CodeTryCatchFinallyStatement.cs
- Utils.cs
- WebPartDescription.cs
- AggregatePushdown.cs
- DesignerToolStripControlHost.cs
- TextElementEnumerator.cs
- CounterSample.cs
- IntranetCredentialPolicy.cs
- TextTrailingCharacterEllipsis.cs
- Crc32.cs
- UnsafeNativeMethods.cs
- DigitShape.cs
- TransformerInfo.cs
- ScriptControl.cs
- Script.cs
- HandlerBase.cs
- BackgroundWorker.cs
- TrackBar.cs
- XPathNodeList.cs
- XmlSchemas.cs
- OutputCacheProfile.cs
- counter.cs
- WebPartPersonalization.cs
- ListManagerBindingsCollection.cs
- NumericUpDownAccelerationCollection.cs
- ScrollBarRenderer.cs
- SiteMapPath.cs
- XmlSchemaObjectCollection.cs
- Attachment.cs
- OptionalColumn.cs
- HwndTarget.cs