我有这些定义:
public interface IHasId
{
string Id { get; set; }
}
public class Something : IHasId
{
public string Id { get; set; }
}
public class Queueable<T>
where T : IHasId, new()
{
public T Item { get; set; }
public int QueueId { get; set; }
}
public class Queue<T>
where T : Queueable<T>, IHasId, new()
{
public void Enqueue(T item)
{
}
public T Dequeue()
{
return default(T);
}
}
public class QueueService
{
private Queue<Queueable<Something>> queue;
//private Queue<Queueable<SomethingElse>> somethingElseQueue;
}
当我编译这个时,我得到了这些错误:
**Error**: The type 'test.Queueable<test.Something>' cannot be used as type parameter 'T' in the generic type or method 'test.Queue<T>'. There is no implicit reference conversion from 'test.Queueable<test.Something>' to 'test.IHasId'.
**Error**: The type 'test.Queueable<test.Something>' cannot be used as type parameter 'T' in the generic type or method 'test.Queue<T>'. There is no implicit reference conversion from 'test.Queueable<test.Something>' to 'test.Queueable<test.Queueable<test.Something>>'.
这是约束问题吗?我正在考虑为 Queue 类使用 2 种类型,一种用于实现 IHasId,另一种用于 Queueable,但我希望这实际上更容易解决。
想法?
提前致谢!R。