Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / Data / ParameterCollection.cs / 1305600 / ParameterCollection.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description: ParameterCollection with a simple change notification callback
// and can be made Read-Only. Created for ObjectDataProvider.
//
//---------------------------------------------------------------------------
using System;
using System.Collections; // IList
using System.Collections.ObjectModel; // Collection
using System.Windows; // SR
namespace MS.Internal.Data
{
internal class ParameterCollection : Collection, IList
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
public ParameterCollection(ParameterCollectionChanged parametersChanged)
: base()
{
_parametersChanged = parametersChanged;
}
#endregion Constructors
//------------------------------------------------------
//
// Interface Properties
//
//-----------------------------------------------------
#region Interface Properties
bool IList.IsReadOnly
{
get
{
return this.IsReadOnly;
}
}
bool IList.IsFixedSize
{
get
{
return this.IsFixedSize;
}
}
#endregion Interface Properties
//------------------------------------------------------
//
// Protected Methods
//
//------------------------------------------------------
#region Protected Methods
// Methods
protected override void ClearItems()
{
CheckReadOnly();
base.ClearItems();
OnCollectionChanged();
}
protected override void InsertItem(int index, object value)
{
CheckReadOnly();
base.InsertItem(index, value);
OnCollectionChanged();
}
protected override void RemoveItem(int index)
{
CheckReadOnly();
base.RemoveItem(index);
OnCollectionChanged();
}
protected override void SetItem(int index, object value)
{
CheckReadOnly();
base.SetItem(index, value);
OnCollectionChanged();
}
#endregion Protected Methods
//-----------------------------------------------------
//
// Protected Properties
//
//------------------------------------------------------
#region Protected Properties
protected virtual bool IsReadOnly
{
get
{
return _isReadOnly;
}
set
{
_isReadOnly = value;
}
}
protected bool IsFixedSize
{
get
{
return this.IsReadOnly;
}
}
#endregion Protected Properties
//-----------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
///
/// sets whether the collection is read-only
///
internal void SetReadOnly(bool isReadOnly)
{
this.IsReadOnly = isReadOnly;
}
///
/// silently clear the list.
///
///
/// this internal method is not affected by the state of IsReadOnly.
///
internal void ClearInternal()
{
base.ClearItems();
}
#endregion Internal Methods
//-----------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
private void CheckReadOnly()
{
if (this.IsReadOnly)
{
throw new InvalidOperationException(SR.Get(SRID.ObjectDataProviderParameterCollectionIsNotInUse));
}
}
///
/// notify ObjectDataProvider that the parameters have changed
///
private void OnCollectionChanged()
{
_parametersChanged(this);
}
#endregion Private Methods
//-----------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
#region Private Fields
private bool _isReadOnly = false;
private ParameterCollectionChanged _parametersChanged;
#endregion Private Fields
}
internal delegate void ParameterCollectionChanged(ParameterCollection parameters);
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description: ParameterCollection with a simple change notification callback
// and can be made Read-Only. Created for ObjectDataProvider.
//
//---------------------------------------------------------------------------
using System;
using System.Collections; // IList
using System.Collections.ObjectModel; // Collection
using System.Windows; // SR
namespace MS.Internal.Data
{
internal class ParameterCollection : Collection, IList
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
public ParameterCollection(ParameterCollectionChanged parametersChanged)
: base()
{
_parametersChanged = parametersChanged;
}
#endregion Constructors
//------------------------------------------------------
//
// Interface Properties
//
//-----------------------------------------------------
#region Interface Properties
bool IList.IsReadOnly
{
get
{
return this.IsReadOnly;
}
}
bool IList.IsFixedSize
{
get
{
return this.IsFixedSize;
}
}
#endregion Interface Properties
//------------------------------------------------------
//
// Protected Methods
//
//------------------------------------------------------
#region Protected Methods
// Methods
protected override void ClearItems()
{
CheckReadOnly();
base.ClearItems();
OnCollectionChanged();
}
protected override void InsertItem(int index, object value)
{
CheckReadOnly();
base.InsertItem(index, value);
OnCollectionChanged();
}
protected override void RemoveItem(int index)
{
CheckReadOnly();
base.RemoveItem(index);
OnCollectionChanged();
}
protected override void SetItem(int index, object value)
{
CheckReadOnly();
base.SetItem(index, value);
OnCollectionChanged();
}
#endregion Protected Methods
//-----------------------------------------------------
//
// Protected Properties
//
//------------------------------------------------------
#region Protected Properties
protected virtual bool IsReadOnly
{
get
{
return _isReadOnly;
}
set
{
_isReadOnly = value;
}
}
protected bool IsFixedSize
{
get
{
return this.IsReadOnly;
}
}
#endregion Protected Properties
//-----------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
///
/// sets whether the collection is read-only
///
internal void SetReadOnly(bool isReadOnly)
{
this.IsReadOnly = isReadOnly;
}
///
/// silently clear the list.
///
///
/// this internal method is not affected by the state of IsReadOnly.
///
internal void ClearInternal()
{
base.ClearItems();
}
#endregion Internal Methods
//-----------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
private void CheckReadOnly()
{
if (this.IsReadOnly)
{
throw new InvalidOperationException(SR.Get(SRID.ObjectDataProviderParameterCollectionIsNotInUse));
}
}
///
/// notify ObjectDataProvider that the parameters have changed
///
private void OnCollectionChanged()
{
_parametersChanged(this);
}
#endregion Private Methods
//-----------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
#region Private Fields
private bool _isReadOnly = false;
private ParameterCollectionChanged _parametersChanged;
#endregion Private Fields
}
internal delegate void ParameterCollectionChanged(ParameterCollection parameters);
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.