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
- PermissionRequestEvidence.cs
- SevenBitStream.cs
- EvidenceBase.cs
- MergeFailedEvent.cs
- SudsWriter.cs
- XmlSerializationWriter.cs
- Size3DConverter.cs
- PropertyStore.cs
- SamlAuthenticationClaimResource.cs
- GcSettings.cs
- safex509handles.cs
- TreeWalkHelper.cs
- TextEditorMouse.cs
- Interlocked.cs
- DataGridPageChangedEventArgs.cs
- ValidatingPropertiesEventArgs.cs
- ObjectListTitleAttribute.cs
- LogConverter.cs
- ParserOptions.cs
- DBNull.cs
- WebPartTracker.cs
- _LocalDataStoreMgr.cs
- SqlClientMetaDataCollectionNames.cs
- ZipIOLocalFileDataDescriptor.cs
- XPathLexer.cs
- HtmlElementErrorEventArgs.cs
- SvcMapFileSerializer.cs
- IPCCacheManager.cs
- XmlCodeExporter.cs
- SystemDiagnosticsSection.cs
- controlskin.cs
- StorageScalarPropertyMapping.cs
- RectAnimationClockResource.cs
- TextDecorationCollection.cs
- JoinSymbol.cs
- XPathException.cs
- TableProviderWrapper.cs
- ConfigurationElement.cs
- AssemblyCollection.cs
- WindowsListViewSubItem.cs
- ViewRendering.cs
- XmlMtomReader.cs
- UnsafeNativeMethods.cs
- XMLSchema.cs
- AutomationProperty.cs
- SessionStateItemCollection.cs
- ObjectKeyFrameCollection.cs
- AssemblyHash.cs
- RSACryptoServiceProvider.cs
- Assembly.cs
- TraceContextRecord.cs
- ipaddressinformationcollection.cs
- GiveFeedbackEvent.cs
- MDIControlStrip.cs
- LinearGradientBrush.cs
- WebPartVerbCollection.cs
- HtmlTable.cs
- SHA1Cng.cs
- ACL.cs
- EdmItemCollection.cs
- DataGridToolTip.cs
- SynchronizingStream.cs
- EventMap.cs
- OpacityConverter.cs
- OletxCommittableTransaction.cs
- CheckBoxRenderer.cs
- UpdatePanelTrigger.cs
- TypedLocationWrapper.cs
- ProfileGroupSettings.cs
- X509Certificate2Collection.cs
- AttributeConverter.cs
- XmlHierarchicalEnumerable.cs
- MonthChangedEventArgs.cs
- Visitor.cs
- SQLRoleProvider.cs
- MailWebEventProvider.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- AbandonedMutexException.cs
- XmlSchemaAny.cs
- OleDbConnectionInternal.cs
- InputReport.cs
- Style.cs
- ReflectEventDescriptor.cs
- StubHelpers.cs
- TextParagraphProperties.cs
- TcpAppDomainProtocolHandler.cs
- mediaeventargs.cs
- NativeMethods.cs
- SmtpNtlmAuthenticationModule.cs
- PropertySourceInfo.cs
- XmlQueryRuntime.cs
- ECDiffieHellmanCngPublicKey.cs
- OdbcFactory.cs
- ValidateNames.cs
- IMembershipProvider.cs
- DbConnectionPoolGroupProviderInfo.cs
- NotSupportedException.cs
- ContentElementCollection.cs
- _StreamFramer.cs
- ToolStripItemTextRenderEventArgs.cs