수십 개의 도메인 객체 (사용자, 그룹, 역할, 커뮤니티, 포스트 등)가 있습니다. 또한 확장 된 개체 (UserExt, GroupExt 등)에서 파생 된 및 일부 추가 데이터가 포함되어 있습니다. 내 데이터 액세스 제어 레이어에는 기본 객체를 검색하는 메소드가 있습니다. 자식 개체에 데이터를 채울 필요가있을 때 이러한 메서드를 사용하지만 그 결과를 자식 형식으로 변환해야 할 때마다
부모 개체를 자식으로 캐스팅 할 수 없기 때문에 모든 부모 - 자식 쌍에 대한 변환기를 제공해야합니다 (생성자, 메서드, 기존 변환기 확장 또는 다른 방법을 통해). 그게 내가 내 변환기를 조정하는 것을 잊을 수있는 기본 유형에 어떤 필드를 추가하는 것처럼 내가 좋아하지 않는 것이다. 부모로부터 자녀의 입력란을 채우기위한 자동화 된 방법이 있습니까?
감사합니다.부모를 자식으로 변환
PS : 코드 :
도메인 오브젝트 :
public class Role : OutdoorObject
{
public String Name { get; set; }
public Int32 CreatedById { get; set; }
public Int32 UpdatedById { get; set; }
}
public class RoleExt : Role
{
public IPrincipal CreatedBy { get; set; }
public IPrincipal UpdatedBy { get; set; }
}
데이터 액세스 레이어 :
public Role GetById(Int32 roleId)
{
try
{
// seek in cache, return if found
LQ_Role lqRole = context.LQ_Roles.FirstOrDefault(r => r.RoleID == roleId);
Role result = LQMapper.LQToObject(lqRole);
// put result to cache
return result;
}
catch (Exception ex)
{
if (ex is BaseRepositoryException) throw ex;
else throw new UnknownRepositoryException(ex.Message);
}
}
서비스 층 :
public Role GetById(IPrincipal Executer, int roleID)
{
try
{
// perform operation
Role r = _repo.GetById(roleID);
// check access
if (!CanRead(Executer, r)) throw new OperationIsNotPermittedServiceException();
return r;
}
catch (Exception ex)
{
// ...
}
}
public RoleExt GetExtById(IPrincipal Executer, int roleID)
{
try
{
// perform operation
Role r = GetById(IPrincipal Executer, int roleID);
RoleExt result = new RoleExt();
// here i need to convert r to result
// and populate addition fields
result.CreatedBy = userService.GetById(Executer, r.CreatedById);
result.UpdatedBy = userService.GetById(Executer, r.UpdatedById);
// check access
if (!CanRead(Executer, result)) throw new OperationIsNotPermittedServiceException();
return result;
}
catch (Exception ex)
{
//...
}
}
수행하려는 작업의 코드 예를 게시 할 수 있습니까? –
@Chris, 업데이트 된 게시물 – Jim