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
- InputLanguageEventArgs.cs
- HttpContext.cs
- ToggleButtonAutomationPeer.cs
- OLEDB_Enum.cs
- TimelineCollection.cs
- StyleTypedPropertyAttribute.cs
- SubpageParaClient.cs
- TdsRecordBufferSetter.cs
- IntSumAggregationOperator.cs
- CheckBoxPopupAdapter.cs
- AssemblyCollection.cs
- ScaleTransform3D.cs
- Memoizer.cs
- QueryOutputWriterV1.cs
- XmlWriterTraceListener.cs
- WmfPlaceableFileHeader.cs
- DashStyles.cs
- ToolStripSystemRenderer.cs
- PartialClassGenerationTaskInternal.cs
- TemplatePartAttribute.cs
- InteropBitmapSource.cs
- StringUtil.cs
- PeerNameRecordCollection.cs
- OlePropertyStructs.cs
- sqlinternaltransaction.cs
- SelectedGridItemChangedEvent.cs
- HashSetEqualityComparer.cs
- WmlCalendarAdapter.cs
- XmlSecureResolver.cs
- EventEntry.cs
- PhysicalAddress.cs
- CachingHintValidation.cs
- SharedStatics.cs
- XmlAnyElementAttributes.cs
- Label.cs
- AssemblyCache.cs
- CursorConverter.cs
- CutCopyPasteHelper.cs
- IdnMapping.cs
- RewritingValidator.cs
- ScriptBehaviorDescriptor.cs
- GACMembershipCondition.cs
- TextRangeProviderWrapper.cs
- MessageSecurityOverMsmqElement.cs
- Color.cs
- DBBindings.cs
- ValidationErrorCollection.cs
- ResetableIterator.cs
- TransformerConfigurationWizardBase.cs
- ExpressionStringBuilder.cs
- MetabaseReader.cs
- sqlser.cs
- StandardBindingReliableSessionElement.cs
- JumpPath.cs
- prompt.cs
- Mouse.cs
- PropertyTabChangedEvent.cs
- FileLoadException.cs
- HTMLTagNameToTypeMapper.cs
- XmlCharCheckingWriter.cs
- EnumUnknown.cs
- ResourceDictionary.cs
- ObservableCollection.cs
- ProcessHostConfigUtils.cs
- RectangleGeometry.cs
- Helpers.cs
- JapaneseCalendar.cs
- ConstructorExpr.cs
- IApplicationTrustManager.cs
- UiaCoreApi.cs
- AsyncCompletedEventArgs.cs
- XPathAxisIterator.cs
- AvTrace.cs
- ListViewGroup.cs
- XmlSchemaSimpleContentExtension.cs
- WebBrowserDesigner.cs
- PointCollectionConverter.cs
- RadioButtonList.cs
- RoleServiceManager.cs
- TextEditorMouse.cs
- RunClient.cs
- CheckoutException.cs
- TreeView.cs
- XmlElementCollection.cs
- ThrowOnMultipleAssignment.cs
- HybridCollection.cs
- BitmapSource.cs
- ReachSerializationCacheItems.cs
- ApplicationDirectoryMembershipCondition.cs
- MouseBinding.cs
- PropertyTab.cs
- NullEntityWrapper.cs
- WmfPlaceableFileHeader.cs
- EventsTab.cs
- RegexCompiler.cs
- ListBindingHelper.cs
- PropertyGroupDescription.cs
- tibetanshape.cs
- DictionaryEntry.cs
- RegexTree.cs