最近两个接口传输数据,以前接口是一条数据传输,现在改成组了,满组自动传输,嗯,委托给你了小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