Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FormViewCommandEventArgs.cs
- PersonalizationEntry.cs
- Parallel.cs
- BuildManagerHost.cs
- CodeAccessPermission.cs
- CellNormalizer.cs
- TraceXPathNavigator.cs
- FileFormatException.cs
- StringAnimationUsingKeyFrames.cs
- SqlCacheDependencyDatabaseCollection.cs
- StorageEntitySetMapping.cs
- OdbcStatementHandle.cs
- JsonFormatReaderGenerator.cs
- ConfigurationManagerHelper.cs
- Path.cs
- VectorValueSerializer.cs
- ConfigXmlReader.cs
- WebPartHeaderCloseVerb.cs
- WebPartEventArgs.cs
- CheckBoxRenderer.cs
- InvalidOperationException.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- NameValuePermission.cs
- Socket.cs
- TraversalRequest.cs
- figurelengthconverter.cs
- FileLogRecordStream.cs
- OrCondition.cs
- CheckBox.cs
- ActivityInterfaces.cs
- UrlMappingsModule.cs
- XmlNavigatorFilter.cs
- SpellerError.cs
- SystemIPGlobalProperties.cs
- NavigationEventArgs.cs
- ProfileManager.cs
- ToolBarPanel.cs
- ByteStream.cs
- CatalogUtil.cs
- TcpConnectionPoolSettingsElement.cs
- PixelShader.cs
- TagMapInfo.cs
- ValidationPropertyAttribute.cs
- EntityDataSourceMemberPath.cs
- XmlAttributeProperties.cs
- AsyncContentLoadedEventArgs.cs
- DataFormats.cs
- ScrollProviderWrapper.cs
- _SSPIWrapper.cs
- SoapReflectionImporter.cs
- QilPatternFactory.cs
- PasswordTextContainer.cs
- Group.cs
- basecomparevalidator.cs
- SymbolType.cs
- MissingSatelliteAssemblyException.cs
- MobileControl.cs
- DataRowExtensions.cs
- FormViewUpdatedEventArgs.cs
- IBuiltInEvidence.cs
- NetworkInformationPermission.cs
- _UncName.cs
- SafeProcessHandle.cs
- MultiBindingExpression.cs
- QuaternionAnimation.cs
- oledbmetadatacolumnnames.cs
- UInt64Storage.cs
- WebControlAdapter.cs
- SocketException.cs
- ToolStripTextBox.cs
- ControlBuilderAttribute.cs
- SqlConnectionFactory.cs
- XmlAttributeCache.cs
- Base64Decoder.cs
- WebColorConverter.cs
- Matrix.cs
- FixedLineResult.cs
- EventLogPermissionEntry.cs
- xml.cs
- XmlNamespaceManager.cs
- FontDifferentiator.cs
- ThemeDirectoryCompiler.cs
- AsyncOperationContext.cs
- VisualStateGroup.cs
- SystemParameters.cs
- ToolStripCustomTypeDescriptor.cs
- HostedElements.cs
- ArrayList.cs
- CodeSubDirectoriesCollection.cs
- LocatorManager.cs
- TargetConverter.cs
- IResourceProvider.cs
- DataGridRelationshipRow.cs
- FormsAuthenticationTicket.cs
- DataGridState.cs
- CellRelation.cs
- IncrementalHitTester.cs
- MatrixTransform.cs
- XsdBuildProvider.cs
- SplitterPanelDesigner.cs