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
- PropertyValueChangedEvent.cs
- QilChoice.cs
- DbProviderManifest.cs
- InstalledFontCollection.cs
- SqlNamer.cs
- ColorAnimation.cs
- HuffModule.cs
- CrossContextChannel.cs
- ExternalCalls.cs
- ReachPageContentSerializerAsync.cs
- DocComment.cs
- AnnotationService.cs
- DataGridPagerStyle.cs
- GenericsNotImplementedException.cs
- TypeLibConverter.cs
- FilterableAttribute.cs
- _SpnDictionary.cs
- FileDialogCustomPlace.cs
- CheckPair.cs
- HwndSubclass.cs
- IdnElement.cs
- AnnotationStore.cs
- Hashtable.cs
- MarshalDirectiveException.cs
- HttpCachePolicyWrapper.cs
- MarginCollapsingState.cs
- MenuScrollingVisibilityConverter.cs
- SqlDataSource.cs
- NodeInfo.cs
- DBParameter.cs
- TreeNodeConverter.cs
- ReverseQueryOperator.cs
- JsonByteArrayDataContract.cs
- TypeSystemHelpers.cs
- MaxSessionCountExceededException.cs
- DeliveryStrategy.cs
- AspNetSynchronizationContext.cs
- PrivilegedConfigurationManager.cs
- ClrPerspective.cs
- UpdateDelegates.Generated.cs
- EventArgs.cs
- WebEvents.cs
- LassoSelectionBehavior.cs
- ToolStripRenderEventArgs.cs
- PageBuildProvider.cs
- Transform.cs
- ResourceBinder.cs
- CalendarDay.cs
- SchemaNotation.cs
- TextTreeRootTextBlock.cs
- NamespaceQuery.cs
- SizeLimitedCache.cs
- CodeSnippetExpression.cs
- DataComponentMethodGenerator.cs
- RelatedEnd.cs
- SafeNativeMethodsOther.cs
- HijriCalendar.cs
- NameHandler.cs
- Boolean.cs
- WindowsAuthenticationEventArgs.cs
- SafeBitVector32.cs
- CompilerCollection.cs
- WorkflowService.cs
- SqlMethodCallConverter.cs
- DependencyPropertyKey.cs
- DataReaderContainer.cs
- ModuleElement.cs
- ObjectListGeneralPage.cs
- PrivilegeNotHeldException.cs
- Calendar.cs
- AppSettingsExpressionBuilder.cs
- MenuBase.cs
- RecordsAffectedEventArgs.cs
- ToolStripSplitStackLayout.cs
- GridViewSelectEventArgs.cs
- ListViewGroup.cs
- localization.cs
- ResourcePermissionBase.cs
- WeakReferenceKey.cs
- SynchronizationContextHelper.cs
- DropShadowEffect.cs
- TextElementCollectionHelper.cs
- GenericRootAutomationPeer.cs
- SqlDependencyUtils.cs
- Transactions.cs
- OdbcReferenceCollection.cs
- XmlCountingReader.cs
- BufferModeSettings.cs
- diagnosticsswitches.cs
- ListViewSelectEventArgs.cs
- UserControl.cs
- SafeCloseHandleCritical.cs
- TabItemAutomationPeer.cs
- TouchesOverProperty.cs
- ClientApiGenerator.cs
- XPathAxisIterator.cs
- SimpleType.cs
- Helpers.cs
- DataServiceRequestOfT.cs
- AuthStoreRoleProvider.cs