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