다른 클래스에서 파생되기를 원하는 속성이있는 파생 클래스를 처리하는 가장 좋은 방법을 찾으려고합니다.상속 : 파생 클래스의 파생 속성
public class PublicAttendanceCode : AttendanceCode {}
public class PublicLeave : AttendanceEvent
{
// PublicAttendanceCode takes the place of AttendanceCode
public PublicAttendanceCode AttendanceCode { get; set; }
}
과 : 가질 수 내가하고 싶은 것을 이제
public abstract class AttendanceEvent
{
public int Id { get; set; }
public DateTime StartDateTime { get; set; }
public DateTime EndDateTime { get; set; }
public AttendanceCode AttendanceCode { get; set; }
}
public abstract class AttendanceCode
{
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public AttendanceType Type { get; set; }
}
입니다 : 내가 당신에게 단순화 된 클래스를 보여 드리죠
public class PrivateAttendanceCode : AttendanceCode {}
public class PrivateLeave : AttendanceEvent
{
// PrivateAttendanceCode takes the place of AttendanceCode
public PrivateAttendanceCode AttendanceCode { get; set; }
}
나는 제네릭 사용에 대한 생각 그래서 나는 가질 것이다 :
public abstract AttendanceEvent<T> where T : AttendanceCode
Bu 엔티티에 권장되는지 또는 EF 코드 우선으로 작동하는지 확실하지 않습니다. 나는에 대한 AttendanceCode을 제약에 대해 진행하지만 다른 방법과 같이 생성자를 제한하는 것입니다 : 내가 궁금하네요
public class PublicLeave : AttendanceEvent
{
public PubliLeave(PublicAttendanceCode code, DateTime startDateTime, DateTime endDateTime)
{
//more code here
}
}
을 이러한 유형의 상황을 다루는 권장되는 방법은 무엇이고 어떤 함정을 볼 수 있습니까 하나의 접근법이나 다른 접근법을 사용하여?
파생 클래스에 추가 속성을 추가하지 말고 기존 AttendanceCode 등록 정보를 계속 사용하십시오. 내 직감은 당신이하고있는 일을하려고 할 때 당신이 LSP를 위반하고 있다는 느낌입니다. –