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
- ThreadStaticAttribute.cs
- MimeBasePart.cs
- MethodExpr.cs
- FontDifferentiator.cs
- MissingManifestResourceException.cs
- BaseDataListComponentEditor.cs
- ToolStripItemTextRenderEventArgs.cs
- HttpResponseWrapper.cs
- PageCatalogPart.cs
- MethodImplAttribute.cs
- ConfigXmlComment.cs
- SmiXetterAccessMap.cs
- SpanIndex.cs
- DiscoveryServiceExtension.cs
- ButtonChrome.cs
- recordstatescratchpad.cs
- BlurEffect.cs
- PreviewPrintController.cs
- AccessViolationException.cs
- HwndKeyboardInputProvider.cs
- StringArrayConverter.cs
- LayoutTableCell.cs
- TransactionManager.cs
- BoolLiteral.cs
- XmlSecureResolver.cs
- ProcessThread.cs
- FormatConvertedBitmap.cs
- CompoundFileIOPermission.cs
- SettingsPropertyWrongTypeException.cs
- EventProviderTraceListener.cs
- Button.cs
- RequestUriProcessor.cs
- MergablePropertyAttribute.cs
- DateTimePicker.cs
- ParameterCollectionEditorForm.cs
- InplaceBitmapMetadataWriter.cs
- DataTemplateKey.cs
- WindowsTooltip.cs
- FontWeight.cs
- MessageQueueEnumerator.cs
- EntityConnectionStringBuilder.cs
- TypeInformation.cs
- OneToOneMappingSerializer.cs
- EpmCustomContentDeSerializer.cs
- OracleConnectionFactory.cs
- SymmetricAlgorithm.cs
- PropertyRef.cs
- CommandBindingCollection.cs
- TraceSwitch.cs
- ProgressChangedEventArgs.cs
- KeyManager.cs
- ConnectionConsumerAttribute.cs
- SQLConvert.cs
- TextEditorParagraphs.cs
- DataColumnMappingCollection.cs
- RedistVersionInfo.cs
- ReliableReplySessionChannel.cs
- TokenBasedSet.cs
- InlineObject.cs
- GroupBox.cs
- Literal.cs
- DependencyPropertyKind.cs
- Collection.cs
- AmbiguousMatchException.cs
- PopupEventArgs.cs
- DownloadProgressEventArgs.cs
- Environment.cs
- DataShape.cs
- SerialReceived.cs
- MetabaseServerConfig.cs
- DocumentXPathNavigator.cs
- StorageScalarPropertyMapping.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- DelayedRegex.cs
- NamedPipeTransportSecurity.cs
- CompilerLocalReference.cs
- printdlgexmarshaler.cs
- ImageField.cs
- _HeaderInfoTable.cs
- ManagementClass.cs
- Double.cs
- WindowsListView.cs
- ClientSponsor.cs
- ClusterSafeNativeMethods.cs
- WindowsStartMenu.cs
- TreeView.cs
- TimeoutException.cs
- InputGestureCollection.cs
- WsdlInspector.cs
- GridViewPageEventArgs.cs
- PlatformCulture.cs
- StringDictionaryCodeDomSerializer.cs
- ThemeDictionaryExtension.cs
- ImageDrawing.cs
- ComEventsHelper.cs
- Mouse.cs
- InvokePattern.cs
- DebugView.cs
- localization.cs
- DuplicateWaitObjectException.cs