Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Data / XmlNamespaceMappingCollection.cs / 1305600 / XmlNamespaceMappingCollection.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description: Implementation of XmlNamespaceMappingCollection object.
//
// Specs: http://avalon/connecteddata/M5%20Specs/XmlDataSource.mht
// http://avalon/connecteddata/M5%20Specs/WCP%20DataSources.mht
//
//---------------------------------------------------------------------------
using System;
using System.Collections; // IEnumerator
using System.Collections.Generic; // ICollection
using System.Xml;
using System.Windows.Markup;
using MS.Utility;
namespace System.Windows.Data
{
///
/// XmlNamespaceMappingCollection Class
/// Used to declare namespaces to be used in Xml data binding XPath queries
///
[Localizability(LocalizationCategory.NeverLocalize)]
public class XmlNamespaceMappingCollection : XmlNamespaceManager, ICollection, IAddChildInternal
{
///
/// Constructor
///
public XmlNamespaceMappingCollection() : base(new NameTable())
{}
#region IAddChild
///
/// IAddChild implementation
///
///
///
void IAddChild.AddChild(object value)
{
AddChild(value);
}
///
/// IAddChild implementation
///
///
protected virtual void AddChild(object value)
{
XmlNamespaceMapping mapping = value as XmlNamespaceMapping;
if (mapping == null)
throw new ArgumentException(SR.Get(SRID.RequiresXmlNamespaceMapping, value.GetType().FullName), "value");
Add(mapping);
}
///
/// IAddChild implementation
///
///
void IAddChild.AddText(string text)
{
AddText(text);
}
///
/// IAddChild implementation
///
///
protected virtual void AddText(string text)
{
if (text == null)
throw new ArgumentNullException("text");
XamlSerializerUtil.ThrowIfNonWhiteSpaceInAddText(text, this);
}
#endregion
#region ICollection
///
/// Add XmlNamespaceMapping
///
/// mapping is null
public void Add(XmlNamespaceMapping mapping)
{
if (mapping == null)
throw new ArgumentNullException("mapping");
if (mapping.Uri == null)
throw new ArgumentException(SR.Get(SRID.RequiresXmlNamespaceMappingUri), "mapping");
//
this.AddNamespace(mapping.Prefix, mapping.Uri.OriginalString);
}
///
/// Remove all XmlNamespaceMappings
///
///
/// This is potentially an expensive operation.
/// It may be cheaper to simply create a new XmlNamespaceMappingCollection.
///
public void Clear()
{
int count = Count;
XmlNamespaceMapping[] array = new XmlNamespaceMapping[count];
CopyTo(array, 0);
for (int i = 0; i < count; ++i)
{
Remove(array[i]);
}
}
///
/// Add XmlNamespaceMapping
///
/// mapping is null
public bool Contains(XmlNamespaceMapping mapping)
{
if (mapping == null)
throw new ArgumentNullException("mapping");
if (mapping.Uri == null)
throw new ArgumentException(SR.Get(SRID.RequiresXmlNamespaceMappingUri), "mapping");
return (this.LookupNamespace(mapping.Prefix) == mapping.Uri.OriginalString);
}
///
/// Copy XmlNamespaceMappings to array
///
public void CopyTo(XmlNamespaceMapping[] array, int arrayIndex)
{
if (array == null)
throw new ArgumentNullException("array");
int i = arrayIndex;
int maxLength = array.Length;
foreach (XmlNamespaceMapping mapping in this)
{
if (i >= maxLength)
throw new ArgumentException(SR.Get(SRID.Collection_CopyTo_NumberOfElementsExceedsArrayLength, "arrayIndex", "array"));
array[i] = mapping;
++ i;
}
}
///
/// Remove XmlNamespaceMapping
///
///
/// true if the mapping was removed
///
/// mapping is null
public bool Remove(XmlNamespaceMapping mapping)
{
if (mapping == null)
throw new ArgumentNullException("mapping");
if (mapping.Uri == null)
throw new ArgumentException(SR.Get(SRID.RequiresXmlNamespaceMappingUri), "mapping");
if (Contains(mapping))
{
this.RemoveNamespace(mapping.Prefix, mapping.Uri.OriginalString);
return true;
}
return false;
}
///
/// Count of the number of XmlNamespaceMappings
///
public int Count
{
get
{
int count = 0;
foreach (XmlNamespaceMapping mapping in this)
{
++ count;
}
return count;
}
}
///
/// Value to indicate if this collection is read only
///
public bool IsReadOnly
{
get { return false; }
}
///
/// IEnumerable implementation.
///
///
/// This enables the serializer to serialize the contents of the XmlNamespaceMappingCollection.
/// The default namespaces (xnm, xml, and string.Empty) are not included in this enumeration.
///
public override IEnumerator GetEnumerator()
{
return ProtectedGetEnumerator();
}
///
/// IEnumerable (generic) implementation.
///
IEnumerator IEnumerable.GetEnumerator()
{
return ProtectedGetEnumerator();
}
///
/// Protected member for use by IEnumerable implementations.
///
protected IEnumerator ProtectedGetEnumerator()
{
IEnumerator enumerator = BaseEnumerator;
while (enumerator.MoveNext())
{
string prefix = (string) enumerator.Current;
// ignore the default namespaces added automatically in the XmlNamespaceManager
if (prefix == "xmlns" || prefix == "xml")
continue;
string ns = this.LookupNamespace(prefix);
// ignore the empty prefix if the namespace has not been reassigned
if ((prefix == string.Empty) && (ns == string.Empty))
continue;
Uri uri = new Uri(ns, UriKind.RelativeOrAbsolute);
XmlNamespaceMapping xnm = new XmlNamespaceMapping(prefix, uri);
yield return xnm;
}
}
// The iterator above cannot access base.GetEnumerator directly - this
// causes build warning 1911, and makes MoveNext throw a security
// exception under partial trust (bug 1785518). Accessing it indirectly
// through this property fixes the problem.
private IEnumerator BaseEnumerator
{
get { return base.GetEnumerator(); }
}
#endregion ICollection
}
}
// 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
- DataGridViewCellFormattingEventArgs.cs
- DataGridTextBoxColumn.cs
- ExclusiveCanonicalizationTransform.cs
- DetailsViewDeletedEventArgs.cs
- VisualBasic.cs
- _DisconnectOverlappedAsyncResult.cs
- ObjectDataSourceStatusEventArgs.cs
- ActivitiesCollection.cs
- BuilderPropertyEntry.cs
- XmlSerializerFactory.cs
- QueryableDataSourceHelper.cs
- WebControlParameterProxy.cs
- DocumentPageView.cs
- SQLCharsStorage.cs
- ArithmeticException.cs
- ImageField.cs
- SafeThemeHandle.cs
- OleCmdHelper.cs
- IgnoreFileBuildProvider.cs
- Brush.cs
- PropertyRef.cs
- SerializationInfoEnumerator.cs
- SynchronousSendBindingElement.cs
- ServiceBehaviorAttribute.cs
- DefaultValueConverter.cs
- DataList.cs
- SharedConnectionWorkflowTransactionService.cs
- ObjectDataSourceView.cs
- ProgressBarRenderer.cs
- SiteMapDataSourceView.cs
- TransformGroup.cs
- EventMappingSettingsCollection.cs
- ScriptingWebServicesSectionGroup.cs
- CellConstantDomain.cs
- StatusBar.cs
- LongValidatorAttribute.cs
- DataFormats.cs
- TextElementCollectionHelper.cs
- DynamicDiscoSearcher.cs
- StaticResourceExtension.cs
- DrawListViewSubItemEventArgs.cs
- SingleAnimationBase.cs
- SimpleLine.cs
- BuildResultCache.cs
- BitmapEffectDrawingContextWalker.cs
- DispatcherExceptionEventArgs.cs
- BehaviorService.cs
- ClientApiGenerator.cs
- HttpListenerRequestUriBuilder.cs
- ReadWriteSpinLock.cs
- DocComment.cs
- Resources.Designer.cs
- TextTreeExtractElementUndoUnit.cs
- PrePostDescendentsWalker.cs
- SecurityProtocol.cs
- DataGridColumnReorderingEventArgs.cs
- TransformedBitmap.cs
- XsdDataContractExporter.cs
- SQLDateTime.cs
- CompositeActivityTypeDescriptorProvider.cs
- ModelVisual3D.cs
- ManagedCodeMarkers.cs
- EntityContainer.cs
- OdbcError.cs
- DesignTimeParseData.cs
- TraceListeners.cs
- Cursors.cs
- XamlFilter.cs
- Int32Converter.cs
- SqlHelper.cs
- GregorianCalendar.cs
- securitycriticaldata.cs
- BitVec.cs
- httpapplicationstate.cs
- PartialCachingControl.cs
- XsdBuilder.cs
- KoreanLunisolarCalendar.cs
- SchemaInfo.cs
- PartialList.cs
- MexBindingElement.cs
- newinstructionaction.cs
- MatrixTransform3D.cs
- AssociationTypeEmitter.cs
- RetrieveVirtualItemEventArgs.cs
- PagerSettings.cs
- ClientConfigurationSystem.cs
- UxThemeWrapper.cs
- HtmlTableCell.cs
- PermissionSetTriple.cs
- DocumentGrid.cs
- DiagnosticTrace.cs
- UiaCoreApi.cs
- EntityCollectionChangedParams.cs
- SignedPkcs7.cs
- OdbcParameter.cs
- SearchForVirtualItemEventArgs.cs
- KeyManager.cs
- RawStylusActions.cs
- ZipIOExtraFieldElement.cs
- IntSecurity.cs