我不得不在几年前为HR系统做这个。我完成有我所有的“域”实现的模板(通用)是:
这里是我做了下调模板的一个例子:
class DataField<T>
{
public T Current { get; set; }
public T Original { get; set; }
// stores the field name as a nice textual readable representation.
// would default to property name if not defined.
public string FieldName { get; set; }
public bool Modified
{
get { return !(Current.Equals(Original));
}
public DataField(T value)
{
Original = Current = value;
}
public DataField(T value, T fieldName)
{
Original = Current = value;
FieldName = fieldName;
}
}
关于它的有趣的部分是由auditting方便的是,每个对象都可以生成它自己的审计日志。我可以接受任何可能包含x个这些'字段'的对象,然后调用GetAudit,它将返回一个审计对象,其中包含显示字段名称,旧val,新val等的所有更改。每个'DataField'将实现一个返回审计对象的方法。对于字符串,双精度,整数等,它几乎已经被烘焙了,但是如果你使用了自定义对象,你可以为它们编写审计实现,只需要返回一个审计对象。
因此,在最后的典型形式中,我将所有数据存储在一个具有所有这些类型字段的对象中。然后我会进行更新并调用GetAudit方法,该方法也将写入审计表。
我可以很容易地分辨什么形式发生了变化,即使他们不得不通过多个页面等
撤消的是在逐个字段,逐节或整个对象级别真的很容易,以及。
对于确切的细节我几乎没有触及代码,但这是它的要点。希望有所帮助。
你认为AOP已经? – Paco 2009-06-24 21:19:09