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
- CodeSubDirectoriesCollection.cs
- SearchForVirtualItemEventArgs.cs
- ResourceProperty.cs
- ProxyManager.cs
- CultureTable.cs
- ToolStripInSituService.cs
- WebResourceUtil.cs
- ImageBrush.cs
- ByteConverter.cs
- HttpWebRequestElement.cs
- CacheDependency.cs
- arabicshape.cs
- DoWorkEventArgs.cs
- ReflectEventDescriptor.cs
- TextTreeTextBlock.cs
- SpotLight.cs
- HttpWriter.cs
- WorkflowInstanceExtensionManager.cs
- PreviewKeyDownEventArgs.cs
- FontFamily.cs
- RuleSettings.cs
- StructuredProperty.cs
- SHA512Managed.cs
- _NtlmClient.cs
- CommandConverter.cs
- EntityDataSourceWrapperCollection.cs
- Properties.cs
- SqlCacheDependencyDatabase.cs
- BreakRecordTable.cs
- DataGridViewEditingControlShowingEventArgs.cs
- HttpCachePolicyElement.cs
- regiisutil.cs
- ListSortDescription.cs
- DataColumnMapping.cs
- IpcClientChannel.cs
- MailWriter.cs
- ProgressiveCrcCalculatingStream.cs
- CommonXSendMessage.cs
- RecommendedAsConfigurableAttribute.cs
- SecUtil.cs
- FixedStringLookup.cs
- EventLogPermissionAttribute.cs
- ResolveMatchesApril2005.cs
- xdrvalidator.cs
- WindowsFormsSectionHandler.cs
- ImageAutomationPeer.cs
- KeyPressEvent.cs
- CodeMemberEvent.cs
- SystemNetworkInterface.cs
- StringExpressionSet.cs
- AutoScrollHelper.cs
- CapabilitiesSection.cs
- EntityConnectionStringBuilderItem.cs
- AuthenticationModulesSection.cs
- newinstructionaction.cs
- CfgParser.cs
- RelationshipFixer.cs
- RelatedPropertyManager.cs
- BinHexEncoder.cs
- SerializationObjectManager.cs
- SessionEndingCancelEventArgs.cs
- AccessDataSourceDesigner.cs
- ArgumentException.cs
- DataGridPagerStyle.cs
- MultilineStringConverter.cs
- InputMethodStateChangeEventArgs.cs
- UInt16Converter.cs
- SelectionProcessor.cs
- SharedPersonalizationStateInfo.cs
- XmlSchemaChoice.cs
- QueryStringConverter.cs
- PropertyDescriptor.cs
- coordinatorfactory.cs
- FileLoadException.cs
- FutureFactory.cs
- ArraySortHelper.cs
- CellNormalizer.cs
- ReaderWriterLock.cs
- HtmlTitle.cs
- GridItemCollection.cs
- RequestCacheValidator.cs
- UrlPropertyAttribute.cs
- WebColorConverter.cs
- SQLString.cs
- PixelShader.cs
- IgnoreFileBuildProvider.cs
- Bits.cs
- SqlDuplicator.cs
- ObjectSpanRewriter.cs
- FramingFormat.cs
- SyndicationDeserializer.cs
- SupportsEventValidationAttribute.cs
- AutoCompleteStringCollection.cs
- IgnoreFlushAndCloseStream.cs
- ResourceCategoryAttribute.cs
- GroupItemAutomationPeer.cs
- XamlReaderHelper.cs
- base64Transforms.cs
- KeyGestureValueSerializer.cs
- webeventbuffer.cs