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
}
}