내가 계층 적으로 중첩 된 제네릭 인터페이스의 사슬, 예를 위해 다음과 같이 있습니다를 계층 구조로 중첩 된 제네릭 인터페이스
ICar<TWheels, TBolts>
where TWheels : IWheels<TBolts>
where TBolts : IBolts
{
IEnumerable<TWheels> Wheels { get; set; }
}
IWheels<TBolts>
where TBolts : IBolts
{
IEnumerable<TBolts> Wheels { get; set; }
}
IBolts
{
}
이 이러한 일반적인 인터페이스를 처리하는 합리적인 방법인가를?
그것은하게 정의하는 방법은 다음과 같이 :
public TCar GetCar<TWheels, TBolts>(int id)
where TCar : ICar<TWheels, TBolts>
where TWheels : IWheels<TBolts>
where TBolts : IBolts
{
...
}
이 코드 서명을 줄일 수있는 방법이 있나요?
아마도 매개 변수를 메서드 대신 클래스에 정의 할 수 있습니다. (그것들은 물론 정적이 아닌 한) –
당신이'TCar'를 반환하기 때문에, 당신이 본질적으로 당신 자신에 그것을 부과하기 때문에, 당신은 처음'where' 절이 필요하다고 생각하지 않습니다. 처음에 ICar를 반환한다고 선언하십시오. –
[답변으로 삭제되고 주석으로 게시 됨] - 너무 많은 인터페이스로 인해 문제가 보완되는 것 같습니다. 반 패턴을 사용해보십시오. – Amit