通过引用将接口传递给基类

时间:2013-03-19 04:43:51

标签: c# inheritance business-logic-layer

我正在创建一个包含众多业务实体的应用程序。我想确保每次修改一个时,我都会相应地对记录加时间戳并放置创建/修改用户。我为这些实体提供了一组实体和服务类。所有实体都实现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();
}

理想情况下,我想通过引用传递实体,但我知道这是不可能的。我的问题是,我如何实现这一点,以便我可以集中这些代码,而不必在每个服务类中实现。

1 个答案:

答案 0 :(得分:1)

伊戈尔是对的!我得知,“将datetime2数据类型转换为日期时间数据类型会导致超出范围的值。”并假设价值没有设定。这实际上是由于一个完全不同的问题。谢谢你指点我正确的方向。