Я хотел бы использовать общий тип в другом родовом типе.Общий тип как общий тип
, но получает следующее исключение:
'MockManagers.ToPos'
Тип не может быть использован в качестве параметра'Res'
типа в универсальном типе или методе'MockManagers.IMockManager<Req,Res>'
. Нет никакого неявного ссылочного преобразования от'MockManagers.ToPos'
до'MockManagers.MockResponseObject<System.IComparable>'
.
Я попробовал несколько вариантов, чтобы решить эту проблему без везения. Это reference предлагает передать внутренний общий тип как параметр для более высокого уровня общего типа. это единственное решение?
Код:
Мой Интерфейс:
/// <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
имеют ту же проблему, что и удаление байт [] и использование байта –
Пожалуйста, изучите историю изменений - я просмотрел код в указанной области, чтобы он действительно имел смысл (потому что вещи, которые выглядят как разметка, такие как '' angle скобки становятся скрытыми). Я не делаю этого снова, но, пожалуйста, сделайте это самостоятельно. –