Имам следния метод, който връща динамичен обект, представляващ IEnumerable<'a>
('a=анонимен тип):
public dynamic GetReportFilesbyStoreProductID(int StoreProductID)
{
Report report = this.repository.GetReportByStoreProductID(StoreProductID);
if (report == null || report.ReportFiles == null)
{
return null;
}
var query = from x in report.ReportFiles
orderby x.DisplayOrder
select new { ID = x.RptFileID, Description = x.LinkDescription, File = x.LinkPath, GroupDescription = x.ReportFileGroup.Description };
return query;
}
Искам да имам достъп до свойството Count
на този IEnumerable
анонимен тип. Опитвам се да осъществя достъп до горния метод, като използвам следния код и не успявам:
dynamic Segments = Top20Controller.GetReportFilesbyStoreProductID(StoreProductID");
if (Segments.Count == 0) // <== Fails because object doesn't contain count.
{
...
}
- Как функционира ключовата дума
dynamic
? - Как мога да получа достъп до свойството
Count
на анонимния типIEnumerable
? - Има ли начин да използвам този анонимен тип или трябва да създам персонализиран обект, за да мога да предам обратно строго въведено
IEnumerable<myObject>
вместоdynamic
?
Бих предпочел да не правя това, ако мога, тъй като този метод се извиква само на едно място и създаването на обект за изхвърляне изглежда като излишно.
IEnumerable
от това. Използването на dynamic за тази цел унищожава всички предимства на статичното писане. - person Kirk Woll   schedule 09.06.2011dynamic
се използва и кога не се използва; Справям се добре с писането на Javascript, Clojure и др., където (аха) всичко е динамично! Съгласен съм обаче, че не е идиоматично C# да се използваdynamic
в тази ситуация. Аз лично бих направил еднократен именуван тип или бих преместил нещата, за да премахна необходимостта от това. - person mqp   schedule 09.06.2011var
и наименуваните типове и не използватеdynamic
за всяка декларация на тип, която имате? - person Kirk Woll   schedule 09.06.2011dynamic
за заобикаляне на неудобни части от C#. - person mqp   schedule 09.06.2011