2010-11-13 8 views
1
List<Object> testimonials = new List<Object>(); 
testimonials.Add(new { 
    Author = "Author 1", 
    Testimonial = "Testimonial 1" 
}); 
testimonials.Add(new { 
    Author = "Author 2", 
    Testimonial = "Testimonial 2" 
}); 
testimonials.Add(new { 
    Author = "Author 3", 
    Testimonial = "Testimonial 3" 
}); 

@ObjectInfo.Print(testimonials[DateTime.Now.DayOfYear % testimonials.Count].Author) 

me donne une CS1061 d'erreur: « objet » ne contient pas une définition pour « Auteur »comment accéder au type anonyme?

Comment puis-je obtenir que l'auteur ou Témoignage de la liste des témoignages?

Répondre

5

Une manière paresseuse serait de changer "objet" pour "dynamique". Ou utilisez un type générique Tuple.

Mais l'OMI, vous devez simplement écrire une classe avec entendre deux propriétés:

public class Testimonial { 
    public string Author {get;set;} 
    public string Comment {get;set;} 
} 

Et utiliser une liste-de-témoignage.

Une autre façon serait d'utiliser quelque chose comme:

C'est un tableau de votre anon-type et;

string author = arr[0].Author; 

Fonctionne correctement.

+1

+1 Les types anonymes sont très utiles, mais dans ce scénario vous devez définir un type strict. –

0

utiliser le tableau implicitement typé:

var arr = new[] 
{ 
    new { Author = "Author 1", Testimonial = "Testimonial 1" }, 
    new { Author = "Author 2", Testimonial = "Testimonial 2" }, 
    new { Author = "Author 3", Testimonial = "Testimonial 3" } 
}; 
// .ToList() if needed, however array supports indexer 

string author = arr[i].Author; 
Questions connexes