Mam obiekt dynamiczny (to w rzeczywistości json), który przekazuję do kontrolera MVC WebApi.Policz obiekty w obrębie dynamicznego obiektu anonimowego (C#)
Obiekt json zawiera wiele list wewnątrz anonimowego obiektu, które są przesyłane do kontrolera z innej aplikacji za pośrednictwem client.PostAsJsonAsync("myapiurl", objectGraph)
.
Co muszę zrobić, aby sprawdzić obiekt po stronie MVC, to uzyskać liczbę obiektów na każdej liście. Mogę uzyskać dostęp do list dynamicznie za pośrednictwem mydynamicobject.mylist
i poszczególnych przedmiotów przez mydynamicobject.mylist[index]
, ale nie mogę uzyskać liczby mydynamicobject.mylist
.
Co próbowałem dotąd: rozszerzenie metod
- LINQ - nie działa na dynamicznym
Enumerable.Count(mydynamicobject.mylist)
- nie można wywnioskować typu
jakieś inne pomysły? Liczba jest właściwie dostępna w obiekcie dynamicznym base
, ale oczywiście nie jest dostępna jako właściwość. Wsparcie!
Działa to teraz:
// This is a MVC/WebApi method
public dynamic Post(dynamic mydynamicobject)
if (((ICollection)mydynamicobject.mylist).Count == 0)
{
// do something
}
Kod, który wysyła dynamiczny obiekt (inną aplikację):
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add
(new MediaTypeWithQualityHeaderValue("application/json"));
var objectGraph = new { mylist = new { Id = 1 }, mylist2 = new { Name = "ABC" } };
var r = client.PostAsJsonAsync("api/mycontroller", objectGraph).Result;
W którym momencie 'mydynamicobject.mylist' kończy się niepowodzeniem - czas kompilacji lub czas wykonania? –
Nie mogę uzyskać tylko liczby na liście wewnątrz dynamicznego obiektu. Awaria zależy od tego, co próbuję. Enumerable.Count powie, że nie może wywnioskować typu i jawnie go określić. – Alex
Przepraszam, miałem na myśli z 'Enumerable.Count' - jest błąd w czasie wykonywania, lub czas kompilacji? Co to jest * typ wykonania czasu 'mydynamicobject.mylist'? –