0
我正在創建一個擁有衆多業務實體的應用程序。我想確保每次修改時,都會相應地記錄該記錄並放置創建/修改用戶。我有一組實體和這些實體的服務類。所有實體都實現IBaseEntity並繼承BaseService。通過引用將接口傳遞給基類
public interface IBaseEntity
{
int Id { get; set; }
DateTime CreatedOn{ get; set; }
DateTime LastModifiedOn { get; set; }
Employee CreatedBy { get; set; }
Employee LastModifiedBy { get; set; }
}
public abstract class BaseService
{
public void Create(IBaseEntity entity)
{
entity.CreatedBy = new Employee { Id = entity.Id };
entity.CreatedOn = DateTime.UtcNow;
entity.LastModifiedBy = new Employee { Id = entity.Id };
entity.LastModifiedOn = DateTime.UtcNow;
}
}
在我的EmployeeService中,我會在添加或附加實體之前調用我的基本Update和Create方法。
public Employee Create(Employee employee)
{
// Create User
base.Create(employee);
context.Employees.Add(employee);
context.SaveChanges();
}
理想情況下,我想通過引用傳遞實體,但我知道這是不可能的。我的問題是,如何實現這一點,以便我可以集中這些代碼,而不必在每個服務類中實現。
任何類實例都是C#中的引用。請解釋更多。 – Igor 2013-03-19 04:50:29
你爲什麼說你不能通過引用傳遞它?由於您的代碼目前處於最新狀態,因此將您的員工類傳遞給您的Create方法沒有任何問題。 – shenku 2013-03-19 04:54:06
對不起,我應該澄清。就目前而言,我對此解決方案的實施不起作用。在基類中編輯的值不會像我所假設的那樣影響員工實體。我的下一個想法是在提交之前通過引用來傳遞它。是的,我可以通過它,但如果我嘗試通過引用來傳遞Create(ref僱員),編譯器會抱怨我無法傳遞一個Employee,因爲它期望一個IBaseEntity。 – XVargas 2013-03-19 04:59:57