I had to do this a few years ago for the HR system. I executed it when all my "fields" implement the template (general):
Here is an example of a template that I cropped:
class DataField<T>
{
public T Current { get; set; }
public T Original { get; set; }
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;
}
}
, , , . , x "" GetAudit , , , val, val .. "DataField" . , double, int .. , , , Audit.
, , , . GetAudit, .
, - , ..
, .
, , . , .