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
- UndoUnit.cs
- WindowsStartMenu.cs
- XmlNodeChangedEventManager.cs
- ColorConvertedBitmapExtension.cs
- TypePropertyEditor.cs
- EncodingDataItem.cs
- AttachedPropertyBrowsableAttribute.cs
- FixedSOMImage.cs
- odbcmetadatafactory.cs
- ISCIIEncoding.cs
- VectorKeyFrameCollection.cs
- SafeLocalAllocation.cs
- XmlExceptionHelper.cs
- RtfNavigator.cs
- XPathSelfQuery.cs
- BitmapData.cs
- Activity.cs
- EntityDataSourceView.cs
- DataGridViewSelectedCellCollection.cs
- WebBrowserNavigatedEventHandler.cs
- Span.cs
- ImageListUtils.cs
- SessionStateModule.cs
- TypeLoadException.cs
- HWStack.cs
- DataAdapter.cs
- AppDomainManager.cs
- HttpDebugHandler.cs
- DesignerPerfEventProvider.cs
- Base64Decoder.cs
- AbandonedMutexException.cs
- DirectoryObjectSecurity.cs
- WebAdminConfigurationHelper.cs
- ListViewGroupConverter.cs
- TextUtf8RawTextWriter.cs
- PerformanceCounterPermissionAttribute.cs
- BitmapDecoder.cs
- ColumnHeader.cs
- TemplatingOptionsDialog.cs
- xmlsaver.cs
- XpsInterleavingPolicy.cs
- ISessionStateStore.cs
- Nullable.cs
- TableAutomationPeer.cs
- DllHostInitializer.cs
- XmlQualifiedNameTest.cs
- UnsettableComboBox.cs
- LogSwitch.cs
- SmiContextFactory.cs
- RecordManager.cs
- ToolStripContainer.cs
- TraceSection.cs
- WeakRefEnumerator.cs
- AsymmetricSignatureFormatter.cs
- CommonDialog.cs
- VerticalAlignConverter.cs
- MenuItemBindingCollection.cs
- DrawListViewSubItemEventArgs.cs
- XmlMapping.cs
- ECDsa.cs
- HelloOperationAsyncResult.cs
- StylusButtonCollection.cs
- TargetConverter.cs
- RotateTransform3D.cs
- FlowDocument.cs
- CustomExpression.cs
- MultiViewDesigner.cs
- MetaModel.cs
- ImportStoreException.cs
- SponsorHelper.cs
- AutoScrollHelper.cs
- WebPartZone.cs
- SecurityPolicySection.cs
- sqlser.cs
- StorageComplexTypeMapping.cs
- AppSettings.cs
- InputEventArgs.cs
- PowerModeChangedEventArgs.cs
- ReturnEventArgs.cs
- FontUnitConverter.cs
- AnimationLayer.cs
- ResourceExpression.cs
- SqlUtil.cs
- RegistryDataKey.cs
- DataGridTable.cs
- DateTimeSerializationSection.cs
- ActivityInterfaces.cs
- SHA256Managed.cs
- ClientTarget.cs
- Types.cs
- AutomationElement.cs
- RtType.cs
- PeerPresenceInfo.cs
- Handle.cs
- TextServicesLoader.cs
- Deflater.cs
- Compiler.cs
- CellLabel.cs
- TreeViewItemAutomationPeer.cs
- VirtualPath.cs