自定义delegate 的运用实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebApplication1.core
{
public delegate bool CompareHandler(DataParam p);
/// <summary>
/// 参数管理类
/// </summary>
public class DataParameter
{
public List<DataParam> DataParameters;
public DataParameter()
{
DataParameters = new List<DataParam>();
}
/// <summary>
/// 根据条件添加参数
/// </summary>
/// <param name="dataParam">要添加的参数</param>
/// <param name="compare">添加参数要满足的条件</param>
/// <returns>返回参数管理实例,实现联级添加</returns>
public DataParameter AddParam(DataParam dataParam, CompareHandler compare)
{
if (compare(dataParam))
{
DataParameters.Add(dataParam);
}
return this;
}
/// <summary>
/// 重载,添加参数
/// </summary>
/// <param name="dataParam">要添加的参数</param>
/// <returns>返回参数管理实例,实现联级添加</returns>
public DataParameter AddParam(DataParam dataParam)
{
DataParameters.Add(dataParam);
return this;
}
}
/// <summary>
/// 参数
/// </summary>
public class DataParam
{
public DataParam(string name, System.Data.SqlDbType dtype, object value)
{
this.Name = name;
this.DType = dtype;
this.Value = value;
}
/// <summary>
/// 参数名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 参数值
/// </summary>
public object Value { get; set; }
/// <summary>
/// 参数类型
/// </summary>
public System.Data.SqlDbType DType { get; set; }
}
}
调用代码:
protected void Page_Load(object sender, EventArgs e)
{
DataParameter instance = new DataParameter();
DataParam item = new DataParam("fname", SqlDbType.VarChar, "wede");
instance.AddParam(item, delegate(DataParam i) { return i.Name.Equals("fsname"); });
}
当然,也可以完全不用自定义delegate,而用Fun<DataParam,bool>代替delegate。

浙公网安备 33010602011771号