저는 수많은 비즈니스 엔티티가있는 응용 프로그램을 만들고 있습니다. 하나가 수정 될 때마다 해당 레코드를 적절히 타임 스탬프 처리하고 생성/수정 사용자를 배치해야합니다. 해당 엔티티에 대한 엔티티 및 서비스 클래스 그룹이 있습니다. 모든 엔티티는 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에서 엔터티를 추가하거나 연결하기 전에 내 Base Update 및 Create 메서드를 호출합니다.
public Employee Create(Employee employee)
{
// Create User
base.Create(employee);
context.Employees.Add(employee);
context.SaveChanges();
}
이상적으로 엔티티를 참조로 전달하고 싶습니다. 그러나 가능하지 않습니다. 내 질문은 어떻게이 코드를 중앙 집중화하고 각 서비스 클래스 내에서 구현할 필요가 없도록이 작업을 수행 할 수 있는가입니다.
모든 클래스 인스턴스는 C#의 참조입니다. 제발, 더 설명해. – Igor
참조로 전달할 수없는 이유는 무엇입니까? 귀하의 코드가 현 상태이므로 Create 클래스에 직원 클래스를 전달하는 데 문제가 없습니다. – shenku
죄송합니다. 분명히해야합니다. 현재로서는이 솔루션을 구현하지 못합니다. 기본 클래스에서 편집 된 값은 내가 생각한대로 직원 엔티티에 영향을 미치지 않습니다. 나의 다음 생각은 붙이기 전에 참조로 그것을 전달하는 것이었다. 예, 전달할 수 있지만 참조 (Create employee)를 전달하려고하면 컴파일러에서 IBaseEntity가 예상대로 Employee를 전달할 수 없다는 불평을합니다. – XVargas