以下是通过事件来监听实体类属性值的改变的一个小例子
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2008
{
public class BaseEntity
{
public static event EntityChangeEventHandler EntityChange;
public virtual void SetEntityChange(string Property, object OldValue, object NewValue)
{
if (EntityChange != null)
{
EntityChange(this, new EntityChangeEventArgs(Property, OldValue, NewValue));
}
}
}
public delegate void EntityChangeEventHandler(object obj, EntityChangeEventArgs e);
public class EntityChangeEventArgs:EventArgs{
private string _Property;
private object _OldValue;
private object _NewValue;
public EntityChangeEventArgs(string Property, object OldValue, object NewValue)
{
_Property = Property;
_OldValue = OldValue;
_NewValue = NewValue;
}
public string Property
{
get { return _Property; }
set { _Property = value; }
}
public object OldValue
{
get { return _OldValue; }
set { _OldValue = value; }
}
public object NewValue
{
get { return _NewValue; }
set { _NewValue = value; }
}
}
public class Classes : BaseEntity
{
private string _Name="jiang";
public string Name
{
get { return _Name; }
set {
SetEntityChange("Name", _Name, value);
_Name = value;
}
}
private int _Age = 24;
public int Age
{
get { return _Age; }
set {
SetEntityChange("Age", _Age, value);
_Age = value;
}
}
}
class EntityHandler
{
static void EntityHandler_EntityChange(object obj, EntityChangeEventArgs e)
{
Console.WriteLine("Property:" + e.Property + " OldValue:" + e.OldValue + " NewValue:" + e.NewValue);
}
static void BaseEntity_EntityChange2(object obj, EntityChangeEventArgs e)
{
Console.WriteLine("我是:" + e.Property + " 我的旧值是:" + e.OldValue + " 我现在要变成:" + e.NewValue);
}
static void Main()
{
///1 订阅属性改变的事件
BaseEntity.EntityChange += new EntityChangeEventHandler(EntityHandler_EntityChange);
///2 订阅属性改变的事件
BaseEntity.EntityChange+=new EntityChangeEventHandler(BaseEntity_EntityChange2);
Classes C = new Classes();
// SetEntityChange 触发事件
C.Name = "我是cowge";
// SetEntityChange 触发事件
C.Age = 25;
}
}
}