我想在另一通用类型中使用通用类型。通用类型作为通用类型
但得到以下情况除外:
类型
'MockManagers.ToPos'
不能用作在通用类型或方法'MockManagers.IMockManager<Req,Res>'
类型参数'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
在删除字节[]和使用字节 –
时有同样的问题请检查编辑历史记录 - 我在引用区域标记了代码,以便它确实有意义(因为看起来像标记的东西,例如''角括号变成隐藏)。我不再做,但请自己做。 –