我有一种情况,我有一个非通用的类,但它需要存储集合中通用的对象的实例。在下面的示例中,我不能使Foo通用,但我需要在pendingRequests字典中存储Request对象。以下代码将在pendingRequests的声明中给出错误,该声明使用通用类型请求&#39; 1&#39;类型参数&#34;但如果我将<Response>
添加到请求中,那么当我尝试在addRequest中添加到字典时,我会收到强制转换错误。
我需要使Dictionary声明通用,但不要使Foo通用。这可以做到,还是应该以另一种方式做到这一点?我为此添加了一个皱纹,因为它需要与Unity 3d一起工作,所以我坚持使用它。
class Foo
{
private Dictionary<int, Request> pendingRequests;
void addRequest<T>(int sequence, Request<T> request) where T : Response
{
pendingRequests[sequence] = request;
}
}
class Request<T> where T : Response
{
}
class Response
{
}