using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace Ant.ORM { /// /// 参数集合 /// public class QueryParameterCollection : MarshalByRefObject, IEnumerable, IEnumerator { private int position; private List item; public QueryParameterCollection() { item = new List(); position = -1; } public QueryParameterCollection(int capacity) { item = new List(capacity); position = -1; } public QueryParameter Add(QueryParameter parameter) { item.Add(parameter); return item[item.Count - 1]; } public QueryParameter Add(string parameterName, object Value) { QueryParameter parameter = new QueryParameter(parameterName, Value); item.Add(parameter); return item[item.Count - 1]; } public QueryParameter Add(string parameterName, DbType dbType) { QueryParameter parameter = new QueryParameter(parameterName, dbType); item.Add(parameter); return parameter; } public QueryParameter Add(string parameterName, DbType dbType, object value) { QueryParameter parameter = new QueryParameter(); parameter.ParameterName = parameterName; parameter.DbType = dbType; parameter.Value = value; item.Add(parameter); return item[item.Count - 1]; } public QueryParameter Add(string parameterName, DbType dbType, int size, string sourceColumn) { QueryParameter parameter = new QueryParameter(parameterName, dbType, size, sourceColumn); item.Add(parameter); return item[item.Count - 1]; } public QueryParameter Add(string parameterName, DbType dbType, int size, ParameterDirection direction, bool isNullable, byte precision, byte scale, string sourceColumn, DataRowVersion sourceVersion, object Value) { QueryParameter parameter = new QueryParameter(parameterName, dbType, size, direction, isNullable, precision, scale, sourceColumn, sourceVersion, Value); item.Add(parameter); return item[item.Count - 1]; } public int Count { get { return item.Count; } } public QueryParameter this[int index] { get { return (QueryParameter)item[index]; } set { item[index] = value; } } public QueryParameter this[string parameterName] { get { return (QueryParameter)item[this.IndexOf(parameterName)]; } set { item[this.IndexOf(parameterName)] = value; } } /// /// 返回参数在集合中的位置 /// /// /// public int IndexOf(string parameterName) { int index = -1; for (int i = 0; i < item.Count; i++) { if (item[i].ParameterName.Equals(parameterName)) { index = i; break; } } return index; } /// /// 清除所有参数 /// public void Clear() { item.Clear(); position = -1; } #region IEnumerable 成员 IEnumerator IEnumerable.GetEnumerator() { return this; } #endregion #region IEnumerator 成员 public object Current { get { return this.item[position]; } } public bool MoveNext() { if (position < this.item.Count - 1) { position++; return true; } else { return false; } } public void Reset() { position = -1; } #endregion } }