『转』数据库的委托之类型分类处理 很久没研究数据库了,因为 XEIM 飞鸽传书 这个软件需要用到数据库,于是研究一下。
转载的,上网搜原创,我也不知道哪里来的。
一般数据库里区分类别可以直接存放字符,也可以用数字区分。
比如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了。省的我们还要去记字典方法名。