Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / System / Data / ProviderBase / DbParameterCollectionHelper.cs / 1 / DbParameterCollectionHelper.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace NAMESPACE
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Data.ProviderBase;
using System.Diagnostics;
using System.Globalization;
using System.Runtime.InteropServices;
#if WINFSInternalOnly
internal
#else
public
#endif
sealed partial class PARAMETERCOLLECTIONOBJECTNAME : DbParameterCollection {
private List _items; // the collection of parameters
override public int Count {
get {
// NOTE: we don't construct the list just to get the count.
return ((null != _items) ? _items.Count : 0);
}
}
private List InnerList {
get {
List items = _items;
if (null == items) {
items = new List();
_items = items;
}
return items;
}
}
override public bool IsFixedSize {
get {
return ((System.Collections.IList)InnerList).IsFixedSize;
}
}
override public bool IsReadOnly {
get {
return ((System.Collections.IList)InnerList).IsReadOnly;
}
}
override public bool IsSynchronized {
get {
return ((System.Collections.ICollection)InnerList).IsSynchronized;
}
}
override public object SyncRoot {
get {
return ((System.Collections.ICollection)InnerList).SyncRoot;
}
}
[
EditorBrowsableAttribute(EditorBrowsableState.Never)
]
override public int Add(object value) {
OnChange(); // fire event before value is validated
ValidateType(value);
Validate(-1, value);
InnerList.Add((PARAMETEROBJECTNAME)value);
return Count-1;
}
override public void AddRange(System.Array values) {
OnChange(); // fire event before value is validated
if (null == values) {
throw ADP.ArgumentNull("values");
}
foreach(object value in values) {
ValidateType(value);
}
foreach(PARAMETEROBJECTNAME value in values) {
Validate(-1, value);
InnerList.Add((PARAMETEROBJECTNAME)value);
}
}
private int CheckName(string parameterName) {
int index = IndexOf(parameterName);
if (index < 0) {
throw ADP.ParametersSourceIndex(parameterName, this, ItemType);
}
return index;
}
override public void Clear() {
OnChange(); // fire event before value is validated
List items = InnerList;
if (null != items) {
foreach(PARAMETEROBJECTNAME item in items) {
item.ResetParent();
}
items.Clear();
}
}
override public bool Contains(object value) {
return (-1 != IndexOf(value));
}
override public void CopyTo(Array array, int index) {
((System.Collections.ICollection)InnerList).CopyTo(array, index);
}
override public System.Collections.IEnumerator GetEnumerator() {
return ((System.Collections.ICollection)InnerList).GetEnumerator();
}
override protected DbParameter GetParameter(int index) {
RangeCheck(index);
return InnerList[index];
}
override protected DbParameter GetParameter(string parameterName) {
int index = IndexOf(parameterName);
if (index < 0) {
throw ADP.ParametersSourceIndex(parameterName, this, ItemType);
}
return InnerList[index];
}
private static int IndexOf(System.Collections.IEnumerable items, string parameterName) {
if (null != items) {
int i = 0;
// first case, kana, width sensitive search
foreach(PARAMETEROBJECTNAME parameter in items) {
if (0 == ADP.SrcCompare(parameterName, parameter.ParameterName)) {
return i;
}
++i;
}
i = 0;
// then insensitive search
foreach(PARAMETEROBJECTNAME parameter in items) {
if (0 == ADP.DstCompare(parameterName, parameter.ParameterName)) {
return i;
}
++i;
}
}
return -1;
}
override public int IndexOf(string parameterName) {
return IndexOf(InnerList, parameterName);
}
override public int IndexOf(object value) {
if (null != value) {
ValidateType(value);
List items = InnerList;
if (null != items) {
int count = items.Count;
for (int i = 0; i < count; i++) {
if (value == items[i]) {
return i;
}
}
}
}
return -1;
}
override public void Insert(int index, object value) {
OnChange(); // fire event before value is validated
ValidateType(value);
Validate(-1, (PARAMETEROBJECTNAME)value);
InnerList.Insert(index, (PARAMETEROBJECTNAME)value);
}
private void RangeCheck(int index) {
if ((index < 0) || (Count <= index)) {
throw ADP.ParametersMappingIndex(index, this);
}
}
override public void Remove(object value) {
OnChange(); // fire event before value is validated
ValidateType(value);
int index = IndexOf(value);
if (-1 != index) {
RemoveIndex(index);
}
else if (this != ((PARAMETEROBJECTNAME)value).CompareExchangeParent(null, this)) {
throw ADP.CollectionRemoveInvalidObject(ItemType, this);
}
}
override public void RemoveAt(int index) {
OnChange(); // fire event before value is validated
RangeCheck(index);
RemoveIndex(index);
}
override public void RemoveAt(string parameterName) {
OnChange(); // fire event before value is validated
int index = CheckName(parameterName);
RemoveIndex(index);
}
private void RemoveIndex(int index) {
List items = InnerList;
Debug.Assert((null != items) && (0 <= index) && (index < Count), "RemoveIndex, invalid");
PARAMETEROBJECTNAME item = items[index];
items.RemoveAt(index);
item.ResetParent();
}
private void Replace(int index, object newValue) {
List items = InnerList;
Debug.Assert((null != items) && (0 <= index) && (index < Count), "Replace Index invalid");
ValidateType(newValue);
Validate(index, newValue);
PARAMETEROBJECTNAME item = items[index];
items[index] = (PARAMETEROBJECTNAME)newValue;
item.ResetParent();
}
override protected void SetParameter(int index, DbParameter value) {
OnChange(); // fire event before value is validated
RangeCheck(index);
Replace(index, value);
}
override protected void SetParameter(string parameterName, DbParameter value) {
OnChange(); // fire event before value is validated
int index = IndexOf(parameterName);
if (index < 0) {
throw ADP.ParametersSourceIndex(parameterName, this, ItemType);
}
Replace(index, value);
}
private void Validate(int index, object value) {
if (null == value) {
throw ADP.ParameterNull("value", this, ItemType);
}
// Validate assigns the parent - remove clears the parent
object parent = ((PARAMETEROBJECTNAME)value).CompareExchangeParent(this, null);
if (null != parent) {
if (this != parent) {
throw ADP.ParametersIsNotParent(ItemType, this);
}
if (index != IndexOf(value)) {
throw ADP.ParametersIsParent(ItemType, this);
}
}
// generate a ParameterName
String name = ((PARAMETEROBJECTNAME)value).ParameterName;
if (0 == name.Length) {
index = 1;
do {
name = ADP.Parameter + index.ToString(CultureInfo.CurrentCulture);
index++;
} while (-1 != IndexOf(name));
((PARAMETEROBJECTNAME)value).ParameterName = name;
}
}
private void ValidateType(object value) {
if (null == value) {
throw ADP.ParameterNull("value", this, ItemType);
}
else if (!ItemType.IsInstanceOfType(value)) {
throw ADP.InvalidParameterType(this, ItemType, value);
}
}
};
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace NAMESPACE
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Data.ProviderBase;
using System.Diagnostics;
using System.Globalization;
using System.Runtime.InteropServices;
#if WINFSInternalOnly
internal
#else
public
#endif
sealed partial class PARAMETERCOLLECTIONOBJECTNAME : DbParameterCollection {
private List _items; // the collection of parameters
override public int Count {
get {
// NOTE: we don't construct the list just to get the count.
return ((null != _items) ? _items.Count : 0);
}
}
private List InnerList {
get {
List items = _items;
if (null == items) {
items = new List();
_items = items;
}
return items;
}
}
override public bool IsFixedSize {
get {
return ((System.Collections.IList)InnerList).IsFixedSize;
}
}
override public bool IsReadOnly {
get {
return ((System.Collections.IList)InnerList).IsReadOnly;
}
}
override public bool IsSynchronized {
get {
return ((System.Collections.ICollection)InnerList).IsSynchronized;
}
}
override public object SyncRoot {
get {
return ((System.Collections.ICollection)InnerList).SyncRoot;
}
}
[
EditorBrowsableAttribute(EditorBrowsableState.Never)
]
override public int Add(object value) {
OnChange(); // fire event before value is validated
ValidateType(value);
Validate(-1, value);
InnerList.Add((PARAMETEROBJECTNAME)value);
return Count-1;
}
override public void AddRange(System.Array values) {
OnChange(); // fire event before value is validated
if (null == values) {
throw ADP.ArgumentNull("values");
}
foreach(object value in values) {
ValidateType(value);
}
foreach(PARAMETEROBJECTNAME value in values) {
Validate(-1, value);
InnerList.Add((PARAMETEROBJECTNAME)value);
}
}
private int CheckName(string parameterName) {
int index = IndexOf(parameterName);
if (index < 0) {
throw ADP.ParametersSourceIndex(parameterName, this, ItemType);
}
return index;
}
override public void Clear() {
OnChange(); // fire event before value is validated
List items = InnerList;
if (null != items) {
foreach(PARAMETEROBJECTNAME item in items) {
item.ResetParent();
}
items.Clear();
}
}
override public bool Contains(object value) {
return (-1 != IndexOf(value));
}
override public void CopyTo(Array array, int index) {
((System.Collections.ICollection)InnerList).CopyTo(array, index);
}
override public System.Collections.IEnumerator GetEnumerator() {
return ((System.Collections.ICollection)InnerList).GetEnumerator();
}
override protected DbParameter GetParameter(int index) {
RangeCheck(index);
return InnerList[index];
}
override protected DbParameter GetParameter(string parameterName) {
int index = IndexOf(parameterName);
if (index < 0) {
throw ADP.ParametersSourceIndex(parameterName, this, ItemType);
}
return InnerList[index];
}
private static int IndexOf(System.Collections.IEnumerable items, string parameterName) {
if (null != items) {
int i = 0;
// first case, kana, width sensitive search
foreach(PARAMETEROBJECTNAME parameter in items) {
if (0 == ADP.SrcCompare(parameterName, parameter.ParameterName)) {
return i;
}
++i;
}
i = 0;
// then insensitive search
foreach(PARAMETEROBJECTNAME parameter in items) {
if (0 == ADP.DstCompare(parameterName, parameter.ParameterName)) {
return i;
}
++i;
}
}
return -1;
}
override public int IndexOf(string parameterName) {
return IndexOf(InnerList, parameterName);
}
override public int IndexOf(object value) {
if (null != value) {
ValidateType(value);
List items = InnerList;
if (null != items) {
int count = items.Count;
for (int i = 0; i < count; i++) {
if (value == items[i]) {
return i;
}
}
}
}
return -1;
}
override public void Insert(int index, object value) {
OnChange(); // fire event before value is validated
ValidateType(value);
Validate(-1, (PARAMETEROBJECTNAME)value);
InnerList.Insert(index, (PARAMETEROBJECTNAME)value);
}
private void RangeCheck(int index) {
if ((index < 0) || (Count <= index)) {
throw ADP.ParametersMappingIndex(index, this);
}
}
override public void Remove(object value) {
OnChange(); // fire event before value is validated
ValidateType(value);
int index = IndexOf(value);
if (-1 != index) {
RemoveIndex(index);
}
else if (this != ((PARAMETEROBJECTNAME)value).CompareExchangeParent(null, this)) {
throw ADP.CollectionRemoveInvalidObject(ItemType, this);
}
}
override public void RemoveAt(int index) {
OnChange(); // fire event before value is validated
RangeCheck(index);
RemoveIndex(index);
}
override public void RemoveAt(string parameterName) {
OnChange(); // fire event before value is validated
int index = CheckName(parameterName);
RemoveIndex(index);
}
private void RemoveIndex(int index) {
List items = InnerList;
Debug.Assert((null != items) && (0 <= index) && (index < Count), "RemoveIndex, invalid");
PARAMETEROBJECTNAME item = items[index];
items.RemoveAt(index);
item.ResetParent();
}
private void Replace(int index, object newValue) {
List items = InnerList;
Debug.Assert((null != items) && (0 <= index) && (index < Count), "Replace Index invalid");
ValidateType(newValue);
Validate(index, newValue);
PARAMETEROBJECTNAME item = items[index];
items[index] = (PARAMETEROBJECTNAME)newValue;
item.ResetParent();
}
override protected void SetParameter(int index, DbParameter value) {
OnChange(); // fire event before value is validated
RangeCheck(index);
Replace(index, value);
}
override protected void SetParameter(string parameterName, DbParameter value) {
OnChange(); // fire event before value is validated
int index = IndexOf(parameterName);
if (index < 0) {
throw ADP.ParametersSourceIndex(parameterName, this, ItemType);
}
Replace(index, value);
}
private void Validate(int index, object value) {
if (null == value) {
throw ADP.ParameterNull("value", this, ItemType);
}
// Validate assigns the parent - remove clears the parent
object parent = ((PARAMETEROBJECTNAME)value).CompareExchangeParent(this, null);
if (null != parent) {
if (this != parent) {
throw ADP.ParametersIsNotParent(ItemType, this);
}
if (index != IndexOf(value)) {
throw ADP.ParametersIsParent(ItemType, this);
}
}
// generate a ParameterName
String name = ((PARAMETEROBJECTNAME)value).ParameterName;
if (0 == name.Length) {
index = 1;
do {
name = ADP.Parameter + index.ToString(CultureInfo.CurrentCulture);
index++;
} while (-1 != IndexOf(name));
((PARAMETEROBJECTNAME)value).ParameterName = name;
}
}
private void ValidateType(object value) {
if (null == value) {
throw ADP.ParameterNull("value", this, ItemType);
}
else if (!ItemType.IsInstanceOfType(value)) {
throw ADP.InvalidParameterType(this, ItemType, value);
}
}
};
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DiscoveryClientElement.cs
- NativeMethods.cs
- Brushes.cs
- WaitingCursor.cs
- UpdateProgress.cs
- SqlClientFactory.cs
- AudioLevelUpdatedEventArgs.cs
- FamilyMap.cs
- PopOutPanel.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- KeyboardNavigation.cs
- ConfigurationValidatorBase.cs
- StatusBarDrawItemEvent.cs
- ObjectStateEntry.cs
- FacetDescription.cs
- ColorConvertedBitmap.cs
- SafeNativeMethods.cs
- SqlSupersetValidator.cs
- RichTextBoxAutomationPeer.cs
- CrossContextChannel.cs
- CaseInsensitiveHashCodeProvider.cs
- TcpProcessProtocolHandler.cs
- TextEndOfLine.cs
- _Semaphore.cs
- RenderContext.cs
- BamlResourceSerializer.cs
- HostingEnvironment.cs
- util.cs
- IOException.cs
- EmptyControlCollection.cs
- DPCustomTypeDescriptor.cs
- VideoDrawing.cs
- EntityDataSourceViewSchema.cs
- DoubleAnimationUsingPath.cs
- ConnectionPointGlyph.cs
- MatrixTransform.cs
- MetadataConversionError.cs
- ContextMenu.cs
- SqlClientMetaDataCollectionNames.cs
- ModuleBuilder.cs
- FixedSOMTableRow.cs
- UTF32Encoding.cs
- PrintDialog.cs
- UserControlCodeDomTreeGenerator.cs
- SiteMap.cs
- ParenthesizePropertyNameAttribute.cs
- LoginDesigner.cs
- InteropAutomationProvider.cs
- SByteStorage.cs
- ColorConverter.cs
- Authorization.cs
- OutKeywords.cs
- MemoryMappedView.cs
- SqlReferenceCollection.cs
- SqlCaseSimplifier.cs
- TextEmbeddedObject.cs
- ImportFileRequest.cs
- EntityDataSourceConfigureObjectContext.cs
- ScrollBarRenderer.cs
- _SpnDictionary.cs
- WaitingCursor.cs
- MouseButton.cs
- MediaPlayerState.cs
- Tablet.cs
- QueryRewriter.cs
- BaseTemplateParser.cs
- ISO2022Encoding.cs
- Repeater.cs
- HtmlInputHidden.cs
- ExpressionBindingCollection.cs
- EntityDataSourceReferenceGroup.cs
- XmlParserContext.cs
- AutomationIdentifierGuids.cs
- XamlPathDataSerializer.cs
- _Connection.cs
- SiteMapNode.cs
- AsymmetricSignatureDeformatter.cs
- DbRetry.cs
- _NegoStream.cs
- OciLobLocator.cs
- CodeCompileUnit.cs
- Visitor.cs
- IBuiltInEvidence.cs
- HttpWebResponse.cs
- MethodBuilderInstantiation.cs
- Image.cs
- SmiContext.cs
- Stylesheet.cs
- OdbcConnectionHandle.cs
- WorkflowEnvironment.cs
- MouseButtonEventArgs.cs
- GroupItemAutomationPeer.cs
- TableLayoutPanelResizeGlyph.cs
- CommandField.cs
- WindowsTreeView.cs
- HttpCachePolicyBase.cs
- TextSelection.cs
- RightsManagementProvider.cs
- RegisteredDisposeScript.cs
- UnsafeNativeMethodsCLR.cs