나는 여기서 명백한 무엇인가를 놓치고 있을지도 모른다. 다음C#에서 제네릭 형식 매개 변수를 연결하지 않아도되는 방법이 있습니까?
public interface IResponse<out T>
where T : class
{
T Response
{
get;
}
}
그리고 제네릭 형식 매개 변수로 이러한 인터페이스를 사용하여 세 번째 인터페이스 :
public interface IRequest<out T>
where T : class
{
T Request
{
get;
}
}
그리고 : 나는 다음이있는 경우 만
public interface IResponder<in TRequest, TRequestValue, out TResponse, TResponseValue>
where TRequest : IRequest<TRequestValue>
where TResponse : IResponse<TResponseValue>
where TRequestValue : class
where TResponseValue : class
{
TResponse Query(TRequest request);
}
은 피할 수있는 방법이 있나요
TRequestValue
및
TResponseValue
을 일반 매개 변수로
IResponder
에 전달해야하므로 (따라서 관련 제약 조건을 복제하지 않아도 됨) ?
기본적으로 나는 비슷한을 선호하려는 (나는이 순간에 컴파일되지 않을 것이다 실현) IResponder
에 제네릭 형식 매개 변수의 수를 줄이기 위해 다음
public interface IResponder<in TRequest, out TResponse>
where TRequest : IRequest
where TResponse : IResponse
{
TResponse Query(TRequest request);
}
유일한 방법 I 이 일을 생각하면 두 개의 비 제너릭 인터페이스 (IRequest
및 IResponse
)를 작성한 다음 IRequest<T>
과 IResponse<T>
을 구현하면되지만 그 방법이 잘못되었다고 생각할 수 있습니다.
저는 여기에서 일하는 방식 때문에이 문제에 부딪 힐 수도 있다는 것을 충분히 알고 있습니다. 그래서 제가 잘못하고있는 것을 제안 해 주시기 바랍니다!
참고 : 전체 요청, 응답, 응답자 예제는 실제로 내가 작성한 코드가 아니라 내 질문을 시도하고 지원하는 예제입니다.
건배 커크. 나는 네가 좋은 지적을했다고 생각한다. 내 디자인을 다시 보면, 두 개의 인터페이스가 실제로 일반화되어있는 이유가 무엇인지 불확실한 것으로 생각하지 않습니다. 그래서 우리가 말하는대로 다시 살펴 보겠습니다. – Dougc