12
votes

Le type «System.Collections de type non générique» n'est pas utilisé, ne peut pas être utilisé avec des arguments de type

The non-generic type 'LoLQueue<T>.SingleLinkNode' cannot be used with type arguments

1 commentaires

Quelle est votre définition de singlelinknode?


3 Réponses :


28
votes

Si vous souhaitez utiliser iEnumerable , comme le suggère le titre de votre message, vous devez inclure à l'aide de system.collections.generic; . .

Quant à la classe SingLelinknode, je ne sais pas où vous l'avez eu, cela ne fait pas partie du cadre .NET que je peux voir. Je suppose que cela n'est pas implémenté à l'aide de génériques et vous devez ajouter un tas de distributeurs de objet à t partout.


3 commentaires

Il a déjà celui indiqué sur la première ligne de son code.


Vrai, mais compte tenu du titre de cette question, c'est "le système de type non générique.Collections.Inumerable", j'ai supposé que quelque chose a changé dans la pâte de copie du code.


Cela a résolu le problème pour moi, mais je ne sais pas pourquoi je n'en avais pas besoin que sur un serveur et non les autres que je le mettais. Y a-t-il des valeurs par défaut qui sont définies au niveau serveur quelque part?



3
votes

Je suis à peu près sûr que vous n'avez pas défini votre classe SingLelinknode comme ayant un paramètre de type générique. En tant que telle, une tentative de le déclarer avec un échoue.

Le message d'erreur suggère que singlelinknode est une classe imbriquée, donc je soupçonne que ce qui peut se passer est que vous déclarez des membres de Singlelinknode de type t , sans déclarer t sous forme de paramètre générique pour singlelinknode . Vous devez toujours faire cela si vous voulez singlelinknode générique, mais sinon, vous pouvez simplement utiliser la classe comme singlelinknode plutôt que singlelinknode .

Exemple de ce que je veux dire: xxx

si vous do voulez que votre classe imbriquée soit générique , alors cela fonctionnera: xxx


0 commentaires

2
votes

Ceci compile pour moi:

public sealed class SingleLinkNode<T>
{

}

public sealed class LoLQueue<T> where T : class
{
    private SingleLinkNode<T> mHe;
    private SingleLinkNode<T> mTa;

    public LoLQueue()
    {
        this.mHe = new SingleLinkNode<T>();
        this.mTa = this.mHe;
    }
}


0 commentaires