Ho un oggetto dinamico (in realtà JSON) che passo al controller MVC WebApi.Contare gli oggetti all'interno dell'oggetto dinamico anonimo (C#)
L'oggetto json contiene più elenchi all'interno di un oggetto anonimo che vengono inviati al controller da un'altra applicazione tramite client.PostAsJsonAsync("myapiurl", objectGraph)
.
Quello che devo fare per convalidare l'oggetto sul lato MVC, è ottenere il conteggio degli oggetti in ogni lista. Posso accedere agli elenchi dinamicamente tramite mydynamicobject.mylist
e singoli articoli tramite mydynamicobject.mylist[index]
ma non riesco a ottenere un conteggio di mydynamicobject.mylist
.
Quello che ho provato finora: i metodi di estensione
- LINQ - non funziona su dinamica
Enumerable.Count(mydynamicobject.mylist)
- non può inferire tipo
Altre idee? Il conteggio è effettivamente disponibile correttamente nell'oggetto dinamico base
ma ovviamente non accessibile come proprietà. Aiuto!
Questo funziona ora:
// This is a MVC/WebApi method
public dynamic Post(dynamic mydynamicobject)
if (((ICollection)mydynamicobject.mylist).Count == 0)
{
// do something
}
Il codice che invia l'oggetto dinamico (diversa app):
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;
A che punto 'mydynamicobject.mylist' non riesce - tempo di compilazione o tempo di esecuzione? –
Non riesco ad arrivare al conteggio della lista all'interno dell'oggetto dinamico. Il fallimento dipende da quello che cerco. Enumerable.Count dirà che non può inferire il tipo e specificarlo esplicitamente. – Alex
Mi spiace, intendevo con 'Enumerable.Count' - l'errore in fase di esecuzione o di compilazione? Che cosa * è * il tipo di tempo di esecuzione di 'mydynamicobject.mylist'? –