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
- XamlWriter.cs
- DTCTransactionManager.cs
- Roles.cs
- RoleService.cs
- WebBrowserNavigatingEventHandler.cs
- RegisteredDisposeScript.cs
- ManifestResourceInfo.cs
- TypeExtensionSerializer.cs
- PreparingEnlistment.cs
- DbParameterCollectionHelper.cs
- COAUTHIDENTITY.cs
- Label.cs
- PersonalizationState.cs
- LoadMessageLogger.cs
- FunctionDefinition.cs
- FragmentQuery.cs
- Soap12ProtocolImporter.cs
- BuildProvider.cs
- TransformGroup.cs
- FileSystemWatcher.cs
- QilPatternVisitor.cs
- XmlAttributeCache.cs
- GetCardDetailsRequest.cs
- SSmlParser.cs
- DataBinding.cs
- Formatter.cs
- DataGridViewRowsAddedEventArgs.cs
- WebResourceAttribute.cs
- CodeDirectoryCompiler.cs
- TreeNodeBindingCollection.cs
- ByteAnimation.cs
- ResourceBinder.cs
- MembershipUser.cs
- Selection.cs
- TypeLoadException.cs
- RetrieveVirtualItemEventArgs.cs
- ReaderOutput.cs
- TemplatedMailWebEventProvider.cs
- PrimitiveXmlSerializers.cs
- validation.cs
- OdbcEnvironment.cs
- PointLightBase.cs
- AttachmentService.cs
- SignedPkcs7.cs
- ToolStripDropDownMenu.cs
- KeyProperty.cs
- HwndAppCommandInputProvider.cs
- fixedPageContentExtractor.cs
- DataPagerCommandEventArgs.cs
- Win32.cs
- SafeNativeMethods.cs
- FilterEventArgs.cs
- BlobPersonalizationState.cs
- CryptoApi.cs
- QilInvoke.cs
- EraserBehavior.cs
- ActiveXMessageFormatter.cs
- IntSecurity.cs
- TextRangeProviderWrapper.cs
- UriWriter.cs
- DPCustomTypeDescriptor.cs
- ListView.cs
- FixedHighlight.cs
- StringUtil.cs
- UrlAuthorizationModule.cs
- HostedHttpRequestAsyncResult.cs
- GeometryDrawing.cs
- Binding.cs
- OleTxTransactionInfo.cs
- FrameAutomationPeer.cs
- ItemPager.cs
- TabPage.cs
- bindurihelper.cs
- SymLanguageType.cs
- Operand.cs
- GridViewUpdateEventArgs.cs
- documentsequencetextcontainer.cs
- QuestionEventArgs.cs
- Binding.cs
- MultiByteCodec.cs
- XsltLibrary.cs
- MethodToken.cs
- DescendantOverDescendantQuery.cs
- List.cs
- XPathAncestorQuery.cs
- ElementUtil.cs
- OperatingSystem.cs
- FunctionQuery.cs
- SharedPerformanceCounter.cs
- MarkupObject.cs
- CompilationUtil.cs
- ToolboxDataAttribute.cs
- ParserExtension.cs
- UnsafeNativeMethodsPenimc.cs
- DataGridColumnCollection.cs
- SQLMembershipProvider.cs
- InputDevice.cs
- TextParagraphView.cs
- LongMinMaxAggregationOperator.cs
- DbProviderSpecificTypePropertyAttribute.cs