填充审计字段的通用方法

时间:2013-03-14 17:36:21

标签: c# wcf

填写审计字段的通用方法

我希望在添加或修改每个实体时填写审核字段。

例如,Customer实体有CreatedDateUpdatedDate。 对于具有CreatedDateUpdatedDate

的订单实体也是如此

我可以使用AddCustomerUpdateCustomer方法或NewOrderUpdateOrder方法更新它们。

AddCustomer

customer.CreatedDate = DateTime.Now;
customer.UpdatedDate= DateTime.Now;

UpdateCustomer

customer.UpdatedDate= DateTime.Now

我想做什么而不是在每个方法中重复代码,我可以使用接受泛型类型和更新的通用方法吗?

private void FillAuditFields<T>(ref T entity)
{
}

我应该在FillAuditFields内(如果可以的话)说entity.CreatedByentity.UpdatedBy。或者有更好的方法吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

根本不需要仿制药,您只需要您的客户&amp;订单类实现了一个接口,例如:

public interface IAuditable
{
    DateTime CreatedDate{get;set;}
    DateTime UpdatedDate{get;set;}
}

并且在适当的地方有两种方法

public void AuditableCreated(IAuditable auditable)
{
    auditable.CreatedDate = DateTime.Now;
}
public void AuditableUpdated(IAuditable auditable)
{
    auditable.UpdatedDate = DateTime.Now;
}

答案 1 :(得分:1)

让您的实体实现一个包含您想要在所有实体上设置的字段的接口,并使用'where'子句将T限制为实现该接口的类。