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
- WeakReference.cs
- LoginCancelEventArgs.cs
- HashJoinQueryOperatorEnumerator.cs
- NameValueSectionHandler.cs
- KeyedHashAlgorithm.cs
- FixedDocumentSequencePaginator.cs
- ISAPIWorkerRequest.cs
- UnsafeNativeMethods.cs
- PageThemeBuildProvider.cs
- WebPartEditorCancelVerb.cs
- XmlQueryTypeFactory.cs
- PathNode.cs
- GlyphingCache.cs
- OdbcInfoMessageEvent.cs
- EntityExpressionVisitor.cs
- streamingZipPartStream.cs
- WindowsAuthenticationModule.cs
- SharedTcpTransportManager.cs
- SiteMapPathDesigner.cs
- SourceFileBuildProvider.cs
- COM2ICategorizePropertiesHandler.cs
- SchemaInfo.cs
- PipeStream.cs
- ErrorTableItemStyle.cs
- List.cs
- MailMessage.cs
- Block.cs
- UserPersonalizationStateInfo.cs
- ProjectionPruner.cs
- AttributeData.cs
- DataGridViewCellEventArgs.cs
- CollectionChangeEventArgs.cs
- PerformanceCounterPermissionEntry.cs
- JsonQNameDataContract.cs
- GcHandle.cs
- CompilerScopeManager.cs
- QilGeneratorEnv.cs
- XPathSelectionIterator.cs
- DictionaryCustomTypeDescriptor.cs
- ImageInfo.cs
- ObjectView.cs
- namescope.cs
- StrokeNode.cs
- ConfigXmlWhitespace.cs
- ObjectMemberMapping.cs
- BooleanSwitch.cs
- DesignerEventService.cs
- NavigationWindowAutomationPeer.cs
- InvokeMethod.cs
- QuinticEase.cs
- GrammarBuilderDictation.cs
- _ListenerResponseStream.cs
- TreeNodeBindingDepthConverter.cs
- SignerInfo.cs
- ControlBindingsCollection.cs
- SettingsPropertyWrongTypeException.cs
- DataRecord.cs
- SendReply.cs
- RemoveStoryboard.cs
- XmlWellformedWriter.cs
- MetadataPropertyvalue.cs
- WmlPhoneCallAdapter.cs
- HTTPNotFoundHandler.cs
- SessionEndedEventArgs.cs
- CatalogZoneBase.cs
- StaticSiteMapProvider.cs
- QueryStringParameter.cs
- GeneralTransform3DTo2DTo3D.cs
- DescriptionAttribute.cs
- _AutoWebProxyScriptWrapper.cs
- TextEndOfLine.cs
- _Semaphore.cs
- UIPermission.cs
- UdpChannelListener.cs
- XmlComment.cs
- TemplateEditingService.cs
- MemberMemberBinding.cs
- CodeExpressionStatement.cs
- DataRelation.cs
- HttpServerProtocol.cs
- CachingHintValidation.cs
- DatePickerDateValidationErrorEventArgs.cs
- XmlSchemaSimpleContentRestriction.cs
- KeyGestureValueSerializer.cs
- RTLAwareMessageBox.cs
- NameValuePair.cs
- WebDisplayNameAttribute.cs
- Thumb.cs
- Dump.cs
- LabelEditEvent.cs
- InternalSafeNativeMethods.cs
- EventDescriptor.cs
- AssemblyBuilderData.cs
- X509Certificate2.cs
- EncoderNLS.cs
- DataViewSettingCollection.cs
- DockingAttribute.cs
- ConfigurationManagerHelperFactory.cs
- TextEditorCharacters.cs
- PenContexts.cs