C#의 퓨전 개체로 더 스마트한 DTO 만들기
전송해야 하는 데이터의 양과 함께 DTO의 양은 항상 증가하고 실제 모델과 동기화되지 않는 환경을 만듭니다. 아마도 처리해야 할 너무 많은 클래스에 직면한 개발자의 기술적 실패 때문일 것입니다. 의.
"융합 개체"란 무엇입니까?
내 용어(모든 책, 문서 또는 외부 기사 제외)에서 "융합 개체"는
Tuple<T1, T2, T3...>
에서 상속하고 Item1 및 Item2 구성원을 숨기는 개체로, 개발자가 필요한 구성원만 노출하면서 참조 엔터티.실제 예
내 데이터베이스에 UserAuthentication(민감한 데이터를 포함하여 사용자의 인증 정보 보유) 및 UserItems(해당 사용자를 참조하는 모든 종류의 임의 항목 보유)라는 두 개의 엔터티가 있다고 가정해 보겠습니다.
class UserAutentication
{
public long Id { get; set; }
public long ItemsId { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
class UserItems
{
public long Id { get; set; }
public long UserId { get; set; }
public short ItemAQuantity { get; set; }
public short ItemBQuantity { get; set; }
}
이제 민감하거나 쓸모없는 데이터를 노출하지 않고 최종 사용자에게 제시 가능한 방식으로 이러한 모델의 특정 필드를 가져올 수 있는 방법을 찾아야 합니다.
일반적인 방법은 다음 예와 같이 표준 DTO 모델을 만드는 것입니다.
class UserSomeActionDTO
{
public string Username { get; set; }
public short ItemAQuantity { get; set; }
public short ItemBQuantity { get; set; }
}
좋아, 대단하지, 그렇지? 그냥 싫다. 이제
UserAuthentication
템플릿 또는 UserItems
를 변경해야 한다고 가정해 보겠습니다. 또한 어려운 유지 관리 관행과 자주 발생할 수 있는 주의 문제에 따라 모든 빌드뿐만 아니라 DTO 모델을 직접 변경해야 합니다."융합 개체"를 사용하면 개체를 명시적으로 구성할 유형과 해당 수량(DTO를 구성할 유형이 2개, 3개 이상인 경우)을 제어하고 필요한 필드만 안전한 방식으로 노출할 수 있습니다.
class UserSomeActionDTO : Tuple<UserAuthentication, UserItems>
{
//Constructor will call default tuple constructor
public UserSomeActionDTO(
UserAuthentication item1,
UserItems item2
) : base(item1, item2) {}
//We will overwrite "Item1" and "Item2" field to make them private
private new readonly UserAuthentication Item1;
private new readonly UserItems Item2;
//Now we can expose only the needed fields to that object
public string Username
{
get => Item1.Username;
}
public short ItemAQuantity
{
get => Item2.ItemAQuantity;
}
public short ItemBQuantity
{
get => Item2.ItemBQuantity;
}
}
이제
new UserSomeActionDTO(myUserAuthentication, myUserItems)
를 호출하는 이 DTO를 간단하게 인스턴스화할 수 있습니다.
Reference
이 문제에 관하여(C#의 퓨전 개체로 더 스마트한 DTO 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/victoriarose/creating-smarter-dtos-with-fusion-objects-in-c-3c5n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)