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
- BulletChrome.cs
- TdsRecordBufferSetter.cs
- ValidatedControlConverter.cs
- MaterialGroup.cs
- SqlFormatter.cs
- Preprocessor.cs
- ConversionValidationRule.cs
- CryptoHelper.cs
- DataGridViewCellValueEventArgs.cs
- CompressionTransform.cs
- MdiWindowListStrip.cs
- DetailsViewModeEventArgs.cs
- SrgsElement.cs
- CollaborationHelperFunctions.cs
- DbParameterCollectionHelper.cs
- RegexFCD.cs
- RemotingHelper.cs
- ListViewAutomationPeer.cs
- ObjectPropertyMapping.cs
- LayoutManager.cs
- TextDecorationCollection.cs
- WasEndpointConfigContainer.cs
- RawStylusSystemGestureInputReport.cs
- EmissiveMaterial.cs
- MasterPage.cs
- AsyncStreamReader.cs
- WebPartHelpVerb.cs
- OleCmdHelper.cs
- CaseInsensitiveComparer.cs
- ApplicationSecurityInfo.cs
- OutputWindow.cs
- CollectionCodeDomSerializer.cs
- FormsAuthenticationUserCollection.cs
- CodeTypeDelegate.cs
- ConfigXmlAttribute.cs
- TypeReference.cs
- BookmarkUndoUnit.cs
- AvTrace.cs
- DocumentApplication.cs
- XmlSortKey.cs
- IRCollection.cs
- Label.cs
- WebControl.cs
- WebReferenceOptions.cs
- TypefaceCollection.cs
- Pointer.cs
- DSGeneratorProblem.cs
- SecurityTokenProvider.cs
- InternalSafeNativeMethods.cs
- PermissionSetTriple.cs
- TextParaClient.cs
- WebBrowser.cs
- Trigger.cs
- ToolStripArrowRenderEventArgs.cs
- IDictionary.cs
- ExtendedPropertyCollection.cs
- WindowsListViewGroupHelper.cs
- TextTabProperties.cs
- FileDataSourceCache.cs
- XmlSchemaObject.cs
- PathGradientBrush.cs
- InfocardExtendedInformationCollection.cs
- HtmlInputHidden.cs
- CompositeActivityValidator.cs
- StyleXamlTreeBuilder.cs
- PropertyItem.cs
- UserPersonalizationStateInfo.cs
- ArgumentOutOfRangeException.cs
- HttpHandlerActionCollection.cs
- XPathNavigatorKeyComparer.cs
- HashSetEqualityComparer.cs
- XPathAxisIterator.cs
- FontCollection.cs
- BuildResultCache.cs
- DesignerListAdapter.cs
- PeerObject.cs
- Italic.cs
- UnsafeNativeMethods.cs
- SmiMetaData.cs
- CDSCollectionETWBCLProvider.cs
- SqlRetyper.cs
- PagedDataSource.cs
- GeometryHitTestResult.cs
- IDReferencePropertyAttribute.cs
- DBDataPermissionAttribute.cs
- DoubleAnimationUsingKeyFrames.cs
- DecoderReplacementFallback.cs
- DataServiceException.cs
- MultipleViewProviderWrapper.cs
- WebHeaderCollection.cs
- DataGridTableCollection.cs
- Types.cs
- _CommandStream.cs
- XhtmlStyleClass.cs
- GridViewSortEventArgs.cs
- CustomAttributeBuilder.cs
- ExclusiveTcpTransportManager.cs
- XmlSortKey.cs
- PersonalizationProviderCollection.cs
- MgmtConfigurationRecord.cs