как получить доступ к анонимному типу? - PullRequest
1 голос
/ 13 ноября 2010
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)

выдаёт ошибку CS1061: «объект» не содержит определения «Автор»

Как я могу получить только Автор или Отзыв из списка отзывов?

Ответы [ 2 ]

5 голосов
/ 13 ноября 2010

Ленивым способом было бы переключить «объект» на «динамический».Или используйте универсальный тип Tuple.

Но IMO вы должны просто написать класс с двумя свойствами listen:

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

и использовать список отзывов.

Другим способом было бы использовать что-то вроде:

var arr = new[]{new{...},new{...}};

Это массив вашего типа anon, и

string author = arr[0].Author;

будет работать нормально.

0 голосов
/ 13 ноября 2010

Использовать неявно типизированный массив:

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;
...