2009-12-03 6 views
2

Étant donné le bloc de code ci-dessous (source: http://www.asp.net/learn/mvc/tutorial-31-cs.aspx) ... Je reçois cette erreur: Utilisation du type générique 'System.Collections.Generic.List' exige '1' arguments de typePrécisions sur les types génériques

Je peux pacifier ceci en modifiant simplement ma déclaration pour lire comme: var groups = new List<string>(); Est-ce juste un cas de syntaxe invalide dans le code d'exemple? Je demande ici, cependant, parce que je l'ai rencontré plus d'une fois et je me demande s'il y a une sorte de "paramètre de rigueur" VS.NET qui pourrait être en jeu dans mon environnement VS.

public class GroupController : Controller 
{ 
    public ActionResult Index() 
    { 
     var groups = new List(); 
     return View(groups); 
    } 

    /// another example... 
    Assert.IsInstanceOfType(result.ViewData.Model, typeof(IEnumerable)); // same error 

    Assert.IsInstanceOfType(result.ViewData.Model, typeof(IEnumerable<string>)); // corrected 

} 

Répondre

1

Il s'agit d'une erreur dans la page Web liée. Si vous regardez la source HTML, vous pouvez voir qu'il ya un argument au paramètre de type générique:

namespace ContactManager.Controllers 
{ 
    public class GroupController : Controller 
    { 
     public ActionResult Index() 
     { 
      var groups = new List<Group>(); 
      return View(groups); 
     } 

    } 
} 

même pour l'exemple ci-dessus (ou, dans votre question, ci-dessous):

// Assert 
Assert.IsInstanceOfType(result.ViewData.Model, typeof(IEnumerable<Group>)); 
+0

Firebug ne m'a pas montré ça! ; p – leppie

1

Oui, cela semble être un bug dans la façon dont l'exemple de code est rendu en HTML

1

Oui, cette syntaxe n'est pas valide dans l'exemple de code rendu.

Un point qui ajoute de la confusion est l'utilisation des deux IEnumerable et IEnumerable<string> dans le code. C'est correct, car IEnumerable et IEnumerable<T> sont différents types. Le premier est non générique, le second est générique.

Comparez cela avec List<T> - il n'y a pas de type non-0enerique List. (L'équivalent le plus proche est ArrayList.)

+0

Merci à toutes les réponses rapides! Je devrais préciser que ces deux lignes IEnumerable sont celles que j'ai ajoutées juste pour la brièveté. – Clay

Questions connexes