2013-02-22 4 views
2

Sur la première ligne, j'obtiens cette erreur de compilation. "La déclaration de paramètre de type doit être un identifiant et non un type.". Y'a t'il un moyen d'arranger cela?Generics - La déclaration de paramètre Type doit être un identifiant et non un type

public class ExtJsGridJsonModel<IEnumerable<T>> 
{ 
    [DataMember(Name = "total")] 
    public int Total { get; set; } 

    [DataMember(Name = "rows")] 
    public IEnumerable<T> Rows { set; get; } 

    public ExtJsGridJsonModel(IEnumerable<T> rows, int total) 
    { 
     this.Rows = rows; 
     this.Total = total; 
    } 
} 

Mise à jour:

Désolé pour le manque de détails dans ma question et ses intentions. Au fond, mon objectif final est de le faire:

new ExtJsGridJsonModel<Company>(); 

plutôt que ceci:

new ExtJsGridJsonModel<IEnumerable<Company>>(); 

Fondamentalement, je veux réduire le code en omettant le type IEnumerable. Comment puis-je faire cela?

+1

Vous voulez le code de @D Stanley alors :) – Darkzaelus

+0

Merci pour l'indice :) – burnt1ce

+0

Vous êtes les bienvenus :) – Darkzaelus

Répondre

5

Il suffit de prendre la IEnumerable partie de votre déclaration:

public class ExtJsGridJsonModel<T> 
{ 
    [DataMember(Name = "total")] 
    public int Total { get; set; } 

    [DataMember(Name = "rows")] 
    public IEnumerable<T> Rows { set; get; } 

    public ExtJsGridJsonModel(IEnumerable<T> rows, int total) 
    { 
     this.Rows = rows; 
     this.Total = total; 
    } 
} 
1

Je suppose que vous utilisez ce pour stocker ce qui est essentiellement un ensemble deux dimensions de valeurs:

public class ExtJsGridJsonModel<T> where T : IEnumerable 
{ 
    [DataMember(Name = "total")] 
    public int Total { get; set; } 

    [DataMember(Name = "rows")] 
    public IEnumerable<T> Rows { set; get; } 

    public ExtJsGridJsonModel(IEnumerable<T> rows, int total) 
    { 
     this.Rows = rows; 
     this.Total = total; 
    } 
} 

Dans le cas contraire, ou T est en fait une classe de ligne fortement typé, vous pouvez supprimer la where T : IEnumerable clause

+0

D'où mes commentaires avant et après l'exemple de code. Comment devrais-je clarifier cela plus avant? – Darkzaelus

Questions connexes