日期:2014-05-17 浏览次数:20936 次
看了http://bbs.csdn.net/topics/380159364 觉得很有意思,在这是做了一些还原。在此与大家分享:
/** * 作者:许阳 * 日期:2013年2月28日 * 简述: * */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; namespace com.mksword.funny { #region 类 /// <summary> /// 判断类 /// </summary> public class 判断 { /// <summary> /// 判断执行方法 /// </summary> /// <param name="Control">控制布尔值</param> /// <returns>执行类</returns> public static 如果是 如果是(bool Control) { return new 如果是(Control); } } /// <summary> /// 判断返回的执行类 /// </summary> public class 如果是 { /// <summary> /// 判断布尔值 /// </summary> private bool Result; /// <summary> /// 构造函数 /// </summary> /// <param name="flag">判断布尔值</param> public 如果是(bool flag) { Result = flag; } } /// <summary> /// 判断为真所返回的类 /// </summary> public class 则 { /// <summary> /// 判断布尔值 /// </summary> private bool Result; /// <summary> /// 构造函数 /// </summary> /// <param name="flag">判断布尔值</param> public 则(bool flag) { Result = flag; } } /// <summary> /// 判断扩展类 /// </summary> public static class 判断扩展 { /// <summary> /// 如果判断是真所执行的方法 /// </summary> /// <param name="rgs">被绑定“如果是”类</param> /// <param name="ac">无参数委托</param> /// <returns>“则”类</returns> public static 则 则(this 如果是 rgs, Action ac) { bool flag; Type tr = rgs.GetType(); flag = (bool)tr.InvokeMember("Result", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField, null, rgs, null); if (flag) ac(); return new 则(flag); } /// <summary> /// 如果判断是假所执行的方法 /// </summary> /// <param name="z">被绑定“则”类</param> /// <param name="ac">无参数委托</param> public static void 否则(this 则 z, Action ac) { bool flag; Type tz = z.GetType(); flag = (bool)tz.InvokeMember("Result", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField, null, z, null); if (!flag) ac(); } } #endregion }