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
- XmlElementCollection.cs
- NaturalLanguageHyphenator.cs
- PropertyRecord.cs
- PersistNameAttribute.cs
- ConfigXmlComment.cs
- PeerObject.cs
- TreeNodeMouseHoverEvent.cs
- _HTTPDateParse.cs
- AuthenticationService.cs
- ArrayTypeMismatchException.cs
- WCFServiceClientProxyGenerator.cs
- OLEDB_Util.cs
- DataStorage.cs
- VirtualPath.cs
- RequestChannel.cs
- CodeCommentStatement.cs
- FrameworkContentElement.cs
- LocalizabilityAttribute.cs
- DesignerActionService.cs
- AppDomainFactory.cs
- MessageBox.cs
- ResolveNameEventArgs.cs
- DropDownButton.cs
- ColumnHeader.cs
- XmlMtomReader.cs
- SystemColors.cs
- NativeMethods.cs
- QueryNode.cs
- StateChangeEvent.cs
- XmlQueryStaticData.cs
- DataGridComboBoxColumn.cs
- CodeDelegateInvokeExpression.cs
- XmlObjectSerializer.cs
- WpfXamlMember.cs
- View.cs
- contentDescriptor.cs
- Atom10FormatterFactory.cs
- Native.cs
- SessionParameter.cs
- EntityProxyTypeInfo.cs
- XXXOnTypeBuilderInstantiation.cs
- ApplicationHost.cs
- NonBatchDirectoryCompiler.cs
- PeerNameResolver.cs
- RijndaelCryptoServiceProvider.cs
- CompiledQueryCacheEntry.cs
- Switch.cs
- UInt32.cs
- ObjectListCommand.cs
- HierarchicalDataSourceConverter.cs
- WindowsListView.cs
- Model3DCollection.cs
- ServiceBusyException.cs
- BufferedWebEventProvider.cs
- HtmlElement.cs
- CapacityStreamGeometryContext.cs
- CodeStatement.cs
- SQLStringStorage.cs
- TaskResultSetter.cs
- ObjectManager.cs
- OrderingExpression.cs
- ConversionHelper.cs
- XmlDataSourceView.cs
- UnsafeNativeMethods.cs
- FunctionQuery.cs
- Roles.cs
- BamlResourceSerializer.cs
- Pen.cs
- EntityCommand.cs
- Point3DKeyFrameCollection.cs
- ErrorHandler.cs
- Int16AnimationUsingKeyFrames.cs
- RequestUriProcessor.cs
- UiaCoreApi.cs
- EdmScalarPropertyAttribute.cs
- XmlSchemaGroup.cs
- AutoResetEvent.cs
- ThreadStartException.cs
- RegexWriter.cs
- DataGridViewCellValueEventArgs.cs
- CoreSwitches.cs
- KernelTypeValidation.cs
- querybuilder.cs
- ToolStripContentPanelRenderEventArgs.cs
- Effect.cs
- TextBoxBase.cs
- ZoneMembershipCondition.cs
- Matrix3D.cs
- HostProtectionException.cs
- DirectoryNotFoundException.cs
- SHA512CryptoServiceProvider.cs
- AutomationElementIdentifiers.cs
- SoapIgnoreAttribute.cs
- LongValidatorAttribute.cs
- MULTI_QI.cs
- PagerSettings.cs
- FixedSOMElement.cs
- XmlObjectSerializerContext.cs
- ToolStripScrollButton.cs
- Activator.cs