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
- CustomSignedXml.cs
- StatusBarItem.cs
- Variant.cs
- GacUtil.cs
- StreamFormatter.cs
- X509CertificateCollection.cs
- TableLayoutSettingsTypeConverter.cs
- MetadataPropertyvalue.cs
- safesecurityhelperavalon.cs
- FaultFormatter.cs
- XmlSchemaException.cs
- ReadOnlyHierarchicalDataSource.cs
- DateTimeFormatInfoScanner.cs
- TextTreeTextElementNode.cs
- GridViewItemAutomationPeer.cs
- _IPv6Address.cs
- PrintPreviewDialog.cs
- SqlUDTStorage.cs
- WebPartEditorApplyVerb.cs
- DiscardableAttribute.cs
- CheckBoxList.cs
- RoutingSection.cs
- MouseDevice.cs
- HtmlShim.cs
- UriTemplateDispatchFormatter.cs
- SQLBinaryStorage.cs
- PointConverter.cs
- FunctionImportElement.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- figurelength.cs
- AppDomainGrammarProxy.cs
- ProgressChangedEventArgs.cs
- Renderer.cs
- ListManagerBindingsCollection.cs
- GenericTypeParameterBuilder.cs
- QueryBranchOp.cs
- ConsumerConnectionPoint.cs
- SubstitutionResponseElement.cs
- StructuralObject.cs
- NativeBuffer.cs
- ErrorWebPart.cs
- WebHostUnsafeNativeMethods.cs
- NavigationEventArgs.cs
- BitmapMetadata.cs
- NestPullup.cs
- TemplateBindingExtensionConverter.cs
- XmlIncludeAttribute.cs
- ObjectListField.cs
- TextTreeNode.cs
- assertwrapper.cs
- ErrorRuntimeConfig.cs
- PolicyStatement.cs
- ReturnEventArgs.cs
- PagesSection.cs
- RuleProcessor.cs
- DrawListViewItemEventArgs.cs
- HostVisual.cs
- WindowPatternIdentifiers.cs
- AspCompat.cs
- CompiledXpathExpr.cs
- BaseResourcesBuildProvider.cs
- MimeFormImporter.cs
- TabPage.cs
- CodeFieldReferenceExpression.cs
- DataSetMappper.cs
- TableLayoutSettingsTypeConverter.cs
- ConfigUtil.cs
- StringArrayConverter.cs
- Drawing.cs
- CurrentChangingEventArgs.cs
- WebSysDescriptionAttribute.cs
- BlobPersonalizationState.cs
- CustomErrorsSection.cs
- Model3DGroup.cs
- DataObject.cs
- COM2IDispatchConverter.cs
- ClaimTypeElement.cs
- HiddenField.cs
- LocatorBase.cs
- DependencySource.cs
- Publisher.cs
- UniqueIdentifierService.cs
- WebBrowserHelper.cs
- ExtensionDataObject.cs
- XmlAttributeCollection.cs
- ProfileBuildProvider.cs
- TargetParameterCountException.cs
- DataDocumentXPathNavigator.cs
- DataControlFieldCollection.cs
- ConstraintEnumerator.cs
- SubtreeProcessor.cs
- MatrixConverter.cs
- UpdatePanelControlTrigger.cs
- ToolboxService.cs
- IBuiltInEvidence.cs
- OutputCacheProviderCollection.cs
- DataGridViewCellStyleConverter.cs
- TreeNodeCollection.cs
- DataServiceKeyAttribute.cs
- ToolboxCategory.cs