Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- WebHttpBinding.cs
- ProcessHostMapPath.cs
- JavaScriptString.cs
- UnwrappedTypesXmlSerializerManager.cs
- SmtpMail.cs
- EventlogProvider.cs
- SelectingProviderEventArgs.cs
- ConfigXmlElement.cs
- VectorCollection.cs
- WebUtil.cs
- MultiByteCodec.cs
- TraceRecord.cs
- WebReferencesBuildProvider.cs
- dtdvalidator.cs
- SafePointer.cs
- AttachedAnnotationChangedEventArgs.cs
- PackagingUtilities.cs
- StylusPointPropertyId.cs
- OdbcCommand.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- SamlAssertion.cs
- FrameworkElementFactoryMarkupObject.cs
- ProfileManager.cs
- HitTestDrawingContextWalker.cs
- TdsParserStateObject.cs
- ConstraintConverter.cs
- DataServiceContext.cs
- PersonalizationEntry.cs
- TraceEventCache.cs
- SqlInternalConnectionSmi.cs
- MatrixStack.cs
- DataGridTablesFactory.cs
- HtmlTitle.cs
- SqlDependency.cs
- DiscoveryReference.cs
- CommandField.cs
- Byte.cs
- NativeMethodsOther.cs
- StylusPointPropertyId.cs
- StylusCollection.cs
- ReadOnlyAttribute.cs
- StyleModeStack.cs
- DbConnectionPoolIdentity.cs
- ContractListAdapter.cs
- ByteStack.cs
- RoutedEventArgs.cs
- WebPartVerbsEventArgs.cs
- PassportPrincipal.cs
- ListViewInsertEventArgs.cs
- XmlValidatingReaderImpl.cs
- SymbolUsageManager.cs
- CLRBindingWorker.cs
- EventData.cs
- ExternalException.cs
- VerificationAttribute.cs
- FilterableAttribute.cs
- ConnectionProviderAttribute.cs
- JpegBitmapEncoder.cs
- CurrentTimeZone.cs
- processwaithandle.cs
- UnsafePeerToPeerMethods.cs
- EntityViewGenerator.cs
- DirectoryNotFoundException.cs
- CollectionChangeEventArgs.cs
- DataGridLinkButton.cs
- EnumerableRowCollectionExtensions.cs
- ClaimSet.cs
- DropShadowBitmapEffect.cs
- PeerService.cs
- SHA256Managed.cs
- EntryWrittenEventArgs.cs
- FastPropertyAccessor.cs
- CodeCatchClauseCollection.cs
- InvalidTimeZoneException.cs
- FtpWebResponse.cs
- XmlSchemaGroup.cs
- ComboBoxRenderer.cs
- AdornerLayer.cs
- Msec.cs
- UniqueConstraint.cs
- TypedRowGenerator.cs
- FlowDocumentPage.cs
- XmlAttributeCollection.cs
- DataFormats.cs
- XamlBrushSerializer.cs
- Shared.cs
- EventLogPermissionHolder.cs
- RegistryKey.cs
- ThrowHelper.cs
- RNGCryptoServiceProvider.cs
- FlowDocumentFormatter.cs
- sqlser.cs
- WebEvents.cs
- CompositeKey.cs
- SortDescription.cs
- HtmlSelect.cs
- StylusPointCollection.cs
- OptimisticConcurrencyException.cs
- XmlComplianceUtil.cs
- RMPermissions.cs