在集合中使用泛型类型,而不使用C#中的泛型类

时间:2015-12-13 06:58:36

标签: c# generics unity3d

我有一种情况,我有一个非通用的类,但它需要存储集合中通用的对象的实例。在下面的示例中,我不能使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
{
}

0 个答案:

没有答案