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
- ConfigXmlAttribute.cs
- XmlAttribute.cs
- MarkerProperties.cs
- RelationshipSet.cs
- SessionChannels.cs
- HtmlControl.cs
- MethodBuilderInstantiation.cs
- AnnotationHelper.cs
- ExpressionUtilities.cs
- input.cs
- XmlChildNodes.cs
- ICspAsymmetricAlgorithm.cs
- NetStream.cs
- ByteConverter.cs
- ComPlusAuthorization.cs
- TreeNodeBinding.cs
- FrameworkRichTextComposition.cs
- X509ChainPolicy.cs
- XmlDomTextWriter.cs
- PropertyGridCommands.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- DetailsViewPagerRow.cs
- PropertyValueChangedEvent.cs
- AdornerDecorator.cs
- SoapAttributes.cs
- DefaultClaimSet.cs
- CodePageEncoding.cs
- DataGridRelationshipRow.cs
- TextReturnReader.cs
- CapabilitiesRule.cs
- Switch.cs
- _DisconnectOverlappedAsyncResult.cs
- CoreChannel.cs
- CodeSnippetStatement.cs
- TablePattern.cs
- ByteStream.cs
- WebBrowserSiteBase.cs
- Timer.cs
- CodeDOMUtility.cs
- PropVariant.cs
- DBBindings.cs
- DBDataPermission.cs
- RoutedEventArgs.cs
- ClientRuntimeConfig.cs
- HideDisabledControlAdapter.cs
- WindowsSysHeader.cs
- JavaScriptSerializer.cs
- EntityDescriptor.cs
- MimeWriter.cs
- SiteMapProvider.cs
- DefinitionBase.cs
- GridPattern.cs
- SafeThemeHandle.cs
- DataDesignUtil.cs
- ToolConsole.cs
- BindingExpressionBase.cs
- WinFormsSecurity.cs
- ProtocolsConfigurationHandler.cs
- RawStylusInput.cs
- DetailsViewDeleteEventArgs.cs
- ISFTagAndGuidCache.cs
- newinstructionaction.cs
- PermissionRequestEvidence.cs
- StrongNameIdentityPermission.cs
- NativeRecognizer.cs
- CommandValueSerializer.cs
- SrgsRulesCollection.cs
- Utils.cs
- ToolboxItemAttribute.cs
- OpenTypeCommon.cs
- SqlCharStream.cs
- CharacterString.cs
- RemotingException.cs
- StrongNamePublicKeyBlob.cs
- NativeWindow.cs
- NodeFunctions.cs
- SystemIPGlobalStatistics.cs
- OutputCacheSection.cs
- CodeAttachEventStatement.cs
- ADRoleFactory.cs
- M3DUtil.cs
- OperatingSystem.cs
- TextEditor.cs
- HttpProfileBase.cs
- ImmutableObjectAttribute.cs
- WorkflowRuntimeBehavior.cs
- LOSFormatter.cs
- TextDecoration.cs
- ResXBuildProvider.cs
- IDataContractSurrogate.cs
- Transform3D.cs
- SiteMapDataSourceView.cs
- XmlSchemaComplexContentExtension.cs
- FormsAuthenticationModule.cs
- xsdvalidator.cs
- SoapConverter.cs
- XmlHierarchicalDataSourceView.cs
- MenuStrip.cs
- ColumnCollection.cs
- ToolStripSplitStackLayout.cs