一般数据库里区分类别可以直接存放字符,也可以用数字区分。
比如1,普通会员 2,管理员 3,超级管理员;库里面存放的是1,2,3等形势。但出库后显示我们需要转换成别人能看的懂的。
所以大家也做数据字典,但每次我做过的数据字典我都记不了,而且使用起来调用的方法名繁琐。
委托可以帮到很大的忙,相信很多人也经常用委托来处理其他事件方法。
比如,我们做一个这样的字典:
/// <summary>
/// 根据数字类型取得该会员的类型名称
/// </summary>
/// <param name="Typeid"></param>
/// <returns></returns>
public string GetNumberType(int Typeid)
{
string laststr = string.Empty;
switch (Typeid)
{
case 0:
laststr = "普通会员";
break;
case 1:
laststr = "VIP会员";
break;
case 2:
laststr = "至尊会员";
break;
}
return laststr;
}
我们这样经常使用这种方法来调用数据字典,简单又实惠。
但是诸如此类需要我们大量做的数据字典太多太多,我们每一次使用都要去找类库查看方法名,太不人性化。
/// <summary>
/// 根据类型取得该消息的类型
/// </summary>
/// <param name="Typeid"></param>
/// <returns></returns>
public string GetMsgType(int Typeid)
{
string laststr = string.Empty;
switch (Typeid)
{
case 1:
laststr = "私人消息";
break;
case 2:
laststr = "系统消息";
break;
case 3:
laststr = "官方消息";
break;
}
return laststr;
}
使用委托就可以不用记这些字典的方法名了。
//委托办事儿去吧
public delegate string GetType(int typeid);
public static string GetLastType(int cot, GetType MakeType)
{
if (cot > 0)
{
return MakeType(cot);
}
else
{
return "";
}
}
使用委托的关键字 delegate 定义了一个GetLastType方法来“处理”诸如此类繁琐的事儿,有人代理了,还要有人来
“代理吧”以后我们要做事儿就找“代理”,来看看代理长什么样?
/// <summary>
/// 代理办事
/// </summary>
/// <param name="typeclass">1,会员的类型;2,消息的类型 </param>
/// <param name="typeid">出库的数字类型</param>
/// <returns>返回名称</returns>
public string Gettype(int typeclass,int typeid)
{
string laststr = string.Empty;
switch(typeclass)
{
case 1:
laststr= GetLastType(typeid, GetNumberType);
break;
case 2:
laststr = GetLastType(typeid, GetMsgType);
break;
}
return laststr;
}
使用的时候就用Gettype方法,写上注释,就完事OK了。省的我们还要去记字典方法名。