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
- StrongNameMembershipCondition.cs
- MarshalDirectiveException.cs
- SettingsProperty.cs
- CompositeScriptReference.cs
- SignerInfo.cs
- PersonalizationDictionary.cs
- GroupBoxDesigner.cs
- XmlSchemaAttributeGroup.cs
- ApplicationFileParser.cs
- ColorIndependentAnimationStorage.cs
- ClientSettingsStore.cs
- NotSupportedException.cs
- adornercollection.cs
- TextElementAutomationPeer.cs
- EnumUnknown.cs
- MessageBox.cs
- JsonObjectDataContract.cs
- UnicodeEncoding.cs
- ShapeTypeface.cs
- X509DefaultServiceCertificateElement.cs
- LineBreakRecord.cs
- ToolstripProfessionalRenderer.cs
- LambdaCompiler.Unary.cs
- JapaneseLunisolarCalendar.cs
- SourceItem.cs
- DataGridViewCheckBoxCell.cs
- AsymmetricKeyExchangeFormatter.cs
- TableMethodGenerator.cs
- SoapHeaderAttribute.cs
- SmtpException.cs
- RangeValueProviderWrapper.cs
- HtmlForm.cs
- BaseCodeDomTreeGenerator.cs
- HttpGetClientProtocol.cs
- TransformDescriptor.cs
- ImmutableCollection.cs
- ArrayWithOffset.cs
- DropDownList.cs
- TextTreeFixupNode.cs
- DriveNotFoundException.cs
- AmbientEnvironment.cs
- FormViewPageEventArgs.cs
- ObjectPropertyMapping.cs
- RegexRunner.cs
- ActionNotSupportedException.cs
- TemplateApplicationHelper.cs
- shaper.cs
- Root.cs
- WebPartDisplayModeCollection.cs
- MetadataSource.cs
- ObjectSpanRewriter.cs
- CodeValidator.cs
- BlurEffect.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- SqlServices.cs
- XmlSchemaSet.cs
- GroupQuery.cs
- PageVisual.cs
- UnsafeNativeMethods.cs
- HtmlHead.cs
- XmlValidatingReaderImpl.cs
- DataServiceQueryOfT.cs
- DynamicFilter.cs
- DispatcherEventArgs.cs
- HttpCapabilitiesEvaluator.cs
- HashCryptoHandle.cs
- SectionRecord.cs
- LassoHelper.cs
- ObjectListCommandsPage.cs
- DynamicEntity.cs
- SqlReferenceCollection.cs
- MyContact.cs
- FastEncoderWindow.cs
- RawStylusInputReport.cs
- ControlPaint.cs
- DependencyPropertyHelper.cs
- ScrollChrome.cs
- TreeViewAutomationPeer.cs
- DummyDataSource.cs
- MaskedTextProvider.cs
- StopStoryboard.cs
- ActiveXHost.cs
- URLBuilder.cs
- WebZone.cs
- XamlPoint3DCollectionSerializer.cs
- HierarchicalDataBoundControl.cs
- SubMenuStyleCollection.cs
- ObjectSet.cs
- DataFormats.cs
- DBCSCodePageEncoding.cs
- NativeCppClassAttribute.cs
- RealProxy.cs
- TextTreeNode.cs
- GenerateHelper.cs
- BamlRecordHelper.cs
- TypedRowGenerator.cs
- XmlSchemaInclude.cs
- Effect.cs
- Evidence.cs
- DocumentDesigner.cs