Ale*_*lex 5 c# linq asp.net-mvc anonymous-types dynamicobject
我有一个动态对象(实际上是json),我将其传递给我的MVC WebApi控制器.
json对象包含匿名对象中的多个列表,这些列表通过另一个应用程序提交给控制器client.PostAsJsonAsync("myapiurl", objectGraph).
我需要做的就是在MVC端验证对象,就是获取每个列表中对象的数量.我可以通过动态访问列表mydynamicobject.mylist和单个项目,mydynamicobject.mylist[index]但我似乎无法得到计数mydynamicobject.mylist.
到目前为止我尝试过的:
Enumerable.Count(mydynamicobject.mylist) - 不能推断类型还有其他想法吗?计数实际上在动态对象中是正确可用的,base但显然不能作为属性访问.救命!
这现在有效:
// This is a MVC/WebApi method
public dynamic Post(dynamic mydynamicobject)
if (((ICollection)mydynamicobject.mylist).Count == 0)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
发送动态对象的代码(不同的应用程序):
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;
Run Code Online (Sandbox Code Playgroud)
Cri*_*ole 11
如果他们是阵列,我相信你正在寻找他们的Length财产.
mydynamicobject.mylist.Length
Run Code Online (Sandbox Code Playgroud)
另外,我想你也许能逃脱铸造mydynamicobject.mylist一个IEnumerable,然后把它交给IEnueramble.Count像这样:
IEnumerable.Count((IEnumerable)mydynamicobject.mylist);
Run Code Online (Sandbox Code Playgroud)
你也可以像保罗所说的那样做:
((ICollection)mydynamicobject.mylist).Count
Run Code Online (Sandbox Code Playgroud)
虽然我不能相信那一个.
| 归档时间: |
|
| 查看次数: |
10769 次 |
| 最近记录: |