填写审计字段的通用方法
我希望在添加或修改每个实体时填写审核字段。
例如,Customer
实体有CreatedDate
,UpdatedDate
。
对于具有CreatedDate
,UpdatedDate
。
我可以使用AddCustomer
或UpdateCustomer
方法或NewOrder
,UpdateOrder
方法更新它们。
AddCustomer
:
customer.CreatedDate = DateTime.Now;
customer.UpdatedDate= DateTime.Now;
UpdateCustomer
:
customer.UpdatedDate= DateTime.Now
我想做什么而不是在每个方法中重复代码,我可以使用接受泛型类型和更新的通用方法吗?
private void FillAuditFields<T>(ref T entity)
{
}
我应该在FillAuditFields
内(如果可以的话)说entity.CreatedBy
,entity.UpdatedBy
。或者有更好的方法吗?
感谢您的帮助
答案 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限制为实现该接口的类。