委托——简单的监控类变动前后

       最近两个接口传输数据,以前接口是一条数据传输,现在改成组了,满组自动传输,嗯,委托给你了小c#。有个问题,监控类属性变化的时候,要注意变化前还是变化后被监控,不然会被打死。

// 要被监管的类属性

 public class ResultSet
 {

        public event EventHandler PropertyChanged;

        private string explain = "";
        /// <summary>
        /// 参数配置
        /// </summary>
        public string Explain
        {
            get { return explain; }
            set
            {

               // 赋值后才触发监控
                explain = value;
                this.OnPropertyChanged(new EventArgs());

              // 赋值前才触发监控
               // this.OnPropertyChanged(new EventArgs());
               // explain = value;
            }
        }

        private void OnPropertyChanged(EventArgs eventArgs)
        {
            if (this.PropertyChanged != null)
            {
                this.PropertyChanged(this, eventArgs);
            }
        }
        
 }

 

// 入口

public class Main

{

     ResultSet resultSet = new ResultSet();
     resultSet.PropertyChanged += new EventHandler(p_PropertyChanged);
     resultSet.Explain = "哎,被监视了";

     resultSet.PropertyChanged -= new EventHandler(p_PropertyChanged);
     resultSet.Explain = "逃脱监管";
     resultSet.Explain = "我又逃脱监管了";

     resultSet.PropertyChanged += new EventHandler(p_PropertyChanged);
     resultSet.Explain = "是的,我被抓了";

     resultSet.PropertyChanged -= new EventHandler(p_PropertyChanged);
     resultSet.Explain = "";

}

 

// 监控到了,你要做的神操作

 public static void MyPropertyChanged(object sender, EventArgs e)
{
      var e1 = sender as ResultSet;

      int i = 0;
 }

到此结束。

 

 

顺便记录下传统的委托

// 首先定义委托

public delegate void MyDelegate(int a, int b);

// 调用委托

public class main

{

   MyDelegate md = MyChanged;
   // 只跑 MyChanged
   md(11,22);

   md = HisChanged;
   // 只跑HisChanged
   md(33, 44);

   md += HersChanged;
   // 跑HisChanged、HersChanged,这就是多播,是不是很方便
   md(55, 66);

       md = ItChanged;
       // 只跑ItChanged
       md(77,88);

}

public static void MyChanged(int a, int b)//事件的处理函数
{
    int i = a;
    int j = b;
}

public static void HisChanged(int a, int b)//事件的处理函数
{
     int i = b;
     int j = a;
}

public static void HersChanged(int a, int b)//事件的处理函数
{

            int i = b;
            int j = a;
 }

 public static void ItChanged(int a, int b)//事件的处理函数
  {

            int i = b;
            int j = a;
   }

虽然都是很简单的内容,不过好记性不如烂笔头,基本功不能忘(^-^)V

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值