Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- RectKeyFrameCollection.cs
- DbExpressionRules.cs
- SafeHandles.cs
- GlyphRun.cs
- SplashScreenNativeMethods.cs
- AccessorTable.cs
- Shape.cs
- localization.cs
- MetabaseReader.cs
- SizeConverter.cs
- BoolExpression.cs
- Literal.cs
- DrawingContext.cs
- ClipboardData.cs
- SecurityElement.cs
- SqlDataSourceSelectingEventArgs.cs
- DBSchemaRow.cs
- Ipv6Element.cs
- PathParser.cs
- SpoolingTaskBase.cs
- QilTargetType.cs
- SkewTransform.cs
- TransformGroup.cs
- SoapMessage.cs
- DrawingServices.cs
- GroupBoxAutomationPeer.cs
- EditorZoneDesigner.cs
- SyndicationCategory.cs
- ItemsControlAutomationPeer.cs
- RawStylusInput.cs
- ZoneLinkButton.cs
- ILGenerator.cs
- URLString.cs
- figurelength.cs
- StringSource.cs
- PaginationProgressEventArgs.cs
- ObjectNotFoundException.cs
- TextEmbeddedObject.cs
- DbExpressionVisitor.cs
- SqlFormatter.cs
- ServiceOperationInvoker.cs
- CfgRule.cs
- PageHandlerFactory.cs
- CDSCollectionETWBCLProvider.cs
- SimpleTextLine.cs
- MaterialGroup.cs
- XmlSchemaDatatype.cs
- ChooseAction.cs
- InternalCache.cs
- HelpInfo.cs
- RemoveFromCollection.cs
- WindowsGraphicsCacheManager.cs
- CurrentTimeZone.cs
- WebHttpBindingElement.cs
- CustomAssemblyResolver.cs
- InvalidComObjectException.cs
- Function.cs
- InnerItemCollectionView.cs
- SelectorItemAutomationPeer.cs
- HtmlAnchor.cs
- AdjustableArrowCap.cs
- TemplateXamlParser.cs
- XmlSchemaRedefine.cs
- PixelShader.cs
- DataFormats.cs
- FormatterConverter.cs
- PersonalizationState.cs
- DataConnectionHelper.cs
- PassportAuthentication.cs
- IdnMapping.cs
- GridViewColumnCollection.cs
- ContainerControl.cs
- ComponentConverter.cs
- XamlVector3DCollectionSerializer.cs
- ComEventsInfo.cs
- XPathNavigatorReader.cs
- DocumentAutomationPeer.cs
- ManagedIStream.cs
- Psha1DerivedKeyGenerator.cs
- SystemIcmpV6Statistics.cs
- Rules.cs
- RadioButton.cs
- TemplateControlBuildProvider.cs
- CodeStatementCollection.cs
- AppDomainProtocolHandler.cs
- Decorator.cs
- BaseParagraph.cs
- DataMember.cs
- MetafileHeader.cs
- ping.cs
- RegexRunner.cs
- COAUTHINFO.cs
- StringAnimationBase.cs
- Int32AnimationUsingKeyFrames.cs
- XmlSchemaAttribute.cs
- ContourSegment.cs
- ReaderContextStackData.cs
- StructuredTypeInfo.cs
- WindowClosedEventArgs.cs
- SoapEnumAttribute.cs