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
- Process.cs
- AssemblyAttributes.cs
- TranslateTransform3D.cs
- XamlSerializerUtil.cs
- DomainUpDown.cs
- shaper.cs
- MaskedTextBoxDesigner.cs
- Setter.cs
- AdapterUtil.cs
- MasterPageCodeDomTreeGenerator.cs
- VSWCFServiceContractGenerator.cs
- MemoryStream.cs
- TargetFrameworkUtil.cs
- NamedPipeTransportElement.cs
- DatatypeImplementation.cs
- StringUtil.cs
- XsltLibrary.cs
- ListViewItemSelectionChangedEvent.cs
- InkCanvasInnerCanvas.cs
- WebPartsPersonalizationAuthorization.cs
- RequestCachePolicy.cs
- GroupItemAutomationPeer.cs
- AssemblyBuilder.cs
- Viewport3DVisual.cs
- BitSet.cs
- SqlDataRecord.cs
- OpenTypeCommon.cs
- CompositeControl.cs
- ServiceManager.cs
- RTTrackingProfile.cs
- ObjRef.cs
- SqlCacheDependency.cs
- DeobfuscatingStream.cs
- CopyNodeSetAction.cs
- SimpleRecyclingCache.cs
- HttpFileCollectionBase.cs
- IntPtr.cs
- WebPart.cs
- XmlDataSource.cs
- DiscreteKeyFrames.cs
- IDQuery.cs
- CustomValidator.cs
- RSACryptoServiceProvider.cs
- FilePrompt.cs
- SmiMetaDataProperty.cs
- latinshape.cs
- DataError.cs
- SoapMessage.cs
- EntityTypeEmitter.cs
- SizeAnimationClockResource.cs
- DataBindingHandlerAttribute.cs
- DataFieldCollectionEditor.cs
- PackageRelationshipSelector.cs
- GridViewRowPresenterBase.cs
- DetailsViewRowCollection.cs
- SemanticTag.cs
- FontStyleConverter.cs
- SessionSwitchEventArgs.cs
- HierarchicalDataBoundControlAdapter.cs
- BitmapPalette.cs
- VirtualizedContainerService.cs
- NameValueConfigurationElement.cs
- CaseInsensitiveOrdinalStringComparer.cs
- SplitterCancelEvent.cs
- SingleTagSectionHandler.cs
- MappingModelBuildProvider.cs
- TextEditor.cs
- FloaterParaClient.cs
- XPathNodeIterator.cs
- sqlpipe.cs
- GridViewRowCollection.cs
- RectConverter.cs
- BindingSource.cs
- DataGridViewDesigner.cs
- WebBrowser.cs
- ButtonBaseAdapter.cs
- TimersDescriptionAttribute.cs
- XmlILIndex.cs
- TimeSpan.cs
- ConfigurationSection.cs
- QuaternionConverter.cs
- XmlSerializableServices.cs
- ProgressChangedEventArgs.cs
- XAMLParseException.cs
- Attributes.cs
- FacetValues.cs
- GlyphInfoList.cs
- XmlSchemaInfo.cs
- webeventbuffer.cs
- BlurEffect.cs
- TextBlockAutomationPeer.cs
- SourceFileBuildProvider.cs
- MessageDecoder.cs
- WmlTextBoxAdapter.cs
- SingleObjectCollection.cs
- CommandHelpers.cs
- XmlAutoDetectWriter.cs
- WCFBuildProvider.cs
- RelatedEnd.cs
- FontFamily.cs