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
- SpecialNameAttribute.cs
- BasicCellRelation.cs
- Substitution.cs
- HtmlElement.cs
- SafeNativeMethods.cs
- ExpressionStringBuilder.cs
- UpdateInfo.cs
- EventKeyword.cs
- ThicknessKeyFrameCollection.cs
- Iis7Helper.cs
- IntPtr.cs
- OpenTypeLayout.cs
- SignedPkcs7.cs
- MimeParameters.cs
- RecognizeCompletedEventArgs.cs
- assemblycache.cs
- FixedDSBuilder.cs
- ServicesUtilities.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- _AuthenticationState.cs
- SoapEnumAttribute.cs
- WebServiceMethodData.cs
- LockCookie.cs
- ModuleConfigurationInfo.cs
- XsltArgumentList.cs
- InputGestureCollection.cs
- CustomAttributeBuilder.cs
- TileBrush.cs
- EventLogEntryCollection.cs
- PartEditor.cs
- CompilerResults.cs
- RowsCopiedEventArgs.cs
- WindowsFormsLinkLabel.cs
- XamlStyleSerializer.cs
- ToolStripContentPanelRenderEventArgs.cs
- StrongName.cs
- FloaterBaseParagraph.cs
- TextRangeEditTables.cs
- TemplateNameScope.cs
- Drawing.cs
- LinqDataSourceContextEventArgs.cs
- MDIWindowDialog.cs
- EventProviderBase.cs
- PerformanceCounterPermissionAttribute.cs
- AuthenticationConfig.cs
- Compress.cs
- MobileListItem.cs
- ArrangedElementCollection.cs
- SchemaLookupTable.cs
- XPathDescendantIterator.cs
- XmlSchemaSimpleTypeRestriction.cs
- CommonXSendMessage.cs
- RelationshipEndCollection.cs
- RuntimeWrappedException.cs
- DbgUtil.cs
- WebConfigurationManager.cs
- ClientBuildManagerCallback.cs
- FixedPage.cs
- UrlAuthorizationModule.cs
- ReferencedAssembly.cs
- CopyOfAction.cs
- AttachedAnnotationChangedEventArgs.cs
- MetadataSerializer.cs
- AssemblyNameProxy.cs
- IsolatedStorageFilePermission.cs
- GeneralTransform3DTo2DTo3D.cs
- HttpContextBase.cs
- HttpFileCollectionBase.cs
- SoapObjectInfo.cs
- TraceSection.cs
- AdapterSwitches.cs
- X509ChainElement.cs
- DependencyPropertyAttribute.cs
- Encoding.cs
- ValidationHelper.cs
- MetadataPropertyCollection.cs
- LinkDescriptor.cs
- PathGradientBrush.cs
- TempEnvironment.cs
- LocatorManager.cs
- ContentTextAutomationPeer.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- XmlUnspecifiedAttribute.cs
- ManifestResourceInfo.cs
- MissingMethodException.cs
- SoundPlayerAction.cs
- QilLoop.cs
- precedingquery.cs
- PermissionToken.cs
- ColorMatrix.cs
- PreviewKeyDownEventArgs.cs
- LinqExpressionNormalizer.cs
- HttpResponseWrapper.cs
- WaitHandle.cs
- DataGridLinkButton.cs
- ClientSettingsSection.cs
- XmlCharType.cs
- AffineTransform3D.cs
- CaseInsensitiveComparer.cs
- SqlDataSourceCache.cs