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
- XmlLinkedNode.cs
- AtomPub10CategoriesDocumentFormatter.cs
- FixedSOMTextRun.cs
- PopOutPanel.cs
- TextParaLineResult.cs
- DataGridItem.cs
- BindingCollectionElement.cs
- ColorMap.cs
- EventsTab.cs
- OptimizedTemplateContentHelper.cs
- InvalidWorkflowException.cs
- AsynchronousChannel.cs
- Rijndael.cs
- QuaternionAnimationBase.cs
- ProfileGroupSettingsCollection.cs
- dsa.cs
- ObjectViewListener.cs
- RelationshipConstraintValidator.cs
- SupportedAddressingMode.cs
- DynamicVirtualDiscoSearcher.cs
- WebServiceParameterData.cs
- BulletChrome.cs
- AttachmentCollection.cs
- PropertyChangingEventArgs.cs
- FieldInfo.cs
- Assert.cs
- GridViewDeletedEventArgs.cs
- ValidationResult.cs
- EntityTypeBase.cs
- DateTimeOffset.cs
- DesignerOptions.cs
- StreamingContext.cs
- NetStream.cs
- PersistChildrenAttribute.cs
- DesignerAdapterUtil.cs
- DataSpaceManager.cs
- ResourceCategoryAttribute.cs
- SoapCodeExporter.cs
- ColorTypeConverter.cs
- SubpageParagraph.cs
- PropertyOrder.cs
- EncoderReplacementFallback.cs
- BinaryCommonClasses.cs
- MergeFilterQuery.cs
- ServiceBusyException.cs
- Stroke.cs
- ActivityMarkupSerializer.cs
- OLEDB_Util.cs
- DataViewManager.cs
- SQLMembershipProvider.cs
- EventWaitHandle.cs
- DataSourceExpressionCollection.cs
- MsmqDecodeHelper.cs
- CookielessHelper.cs
- TagMapCollection.cs
- Literal.cs
- TypeHelper.cs
- BackoffTimeoutHelper.cs
- TimeSpan.cs
- CodeTypeReferenceCollection.cs
- ReplyChannel.cs
- SafeRightsManagementHandle.cs
- ScriptingSectionGroup.cs
- SqlStatistics.cs
- PropertyChangingEventArgs.cs
- MembershipSection.cs
- baseaxisquery.cs
- CodeDirectoryCompiler.cs
- FutureFactory.cs
- TransformerConfigurationWizardBase.cs
- FileDialogPermission.cs
- RadioButton.cs
- ComNativeDescriptor.cs
- DecimalAnimationUsingKeyFrames.cs
- StagingAreaInputItem.cs
- BitVector32.cs
- MediaSystem.cs
- QilChoice.cs
- LineSegment.cs
- HttpCookie.cs
- SourceFileBuildProvider.cs
- DataSourceNameHandler.cs
- Internal.cs
- Soap.cs
- ElementHost.cs
- ObjectItemLoadingSessionData.cs
- ConditionBrowserDialog.cs
- WindowsStreamSecurityUpgradeProvider.cs
- AccessibilityApplicationManager.cs
- SEHException.cs
- FixedDocumentSequencePaginator.cs
- HttpGetClientProtocol.cs
- EditorPartCollection.cs
- GZipDecoder.cs
- PenThread.cs
- WebPartConnectionsConnectVerb.cs
- PropertyPathConverter.cs
- XsltQilFactory.cs
- GeneralTransformCollection.cs
- DesignerSerializationOptionsAttribute.cs