다른 제네릭 유형 내에서 제네릭 유형을 사용하고 싶습니다.일반 유형으로 일반 유형
하지만 다음과 같은 예외를 받고 :
'MockManagers.ToPos'
이 제네릭 형식 또는 메서드'MockManagers.IMockManager<Req,Res>'
입력 매개 변수'Res'
로 사용할 수 없습니다 유형입니다.'MockManagers.ToPos'
에서'MockManagers.MockResponseObject<System.IComparable>'
까지 암시 적 참조 변환이 없습니다.
행운을 보지 않고도이 문제를 해결하기 위해 몇 가지 방법을 시도했습니다. 이 reference은 내부 generic 형식을 상위 수준 generic 형식의 매개 변수로 전달할 것을 제안합니다. 이게 유일한 해결책입니까?
코드
:내 인터페이스 :
/// <summary>
/// Represents IMockManager for mock object creation object.
/// </summary>
/// <typeparam name="Req">The request object Type.</typeparam>
/// <typeparam name="Res">The response object type.</typeparam>
public interface IMockManager<Req, Res>
where Req : MockRequestObject
where Res : MockResponseObject<IComparable>
{...//interface definitions}
객체 implementatation는 :
/// <summary>
/// Represents Mock response for a request object
/// </summary>
public class ToPos : MockResponseObject<byte[]>
{... //implementation}
public class MockBaseObject
{
public int Id { get; set; }
}
public class MockResponseObject<T> : MockBaseObject
{
/// <summary>
/// The response content.
/// </summary>
public T Content { get; set; }
/// <summary>
/// Res creation date.
/// </summary>
public DateTime CreationDate { get; set; }
}
'byte []'는 분명히 'IComparable'입니까? 나는 그것들의 배열이 될 것이라고 생각하지 않았을 것이다. 'Res '에 대한 제한을 제거하면 작동합니까? – Rup
은 바이트 []를 제거하고 바이트 –
을 사용하여 동일한 문제를가집니다. 편집 내역을 확인하십시오 - 실제로는 이해할 수 있도록 따옴표로 묶은 영역의 코드를 마크 업했습니다 (''과 같은 마크 업과 유사하므로 괄호가 숨겨 짐). 나는 다시는하지 않지만 스스로 그렇게하십시오. –