迭代动态对象

MR.*_*ABC 10 c# dynamic asp.net-mvc-4

使用mvc我得到这样的值,以避免类声明和路由器更改.

public dynamic Create([FromBody] dynamic form)
{
    var username = form["username"].Value;
    var password = form["password"].Value;
    var firstname = form["firstname"].Value;
...
Run Code Online (Sandbox Code Playgroud)

我喜欢遍历所有值并检查它们是否为null或为空.

Fel*_*ani 19

好吧,如果你从参数得到一个json,你可以将对象转换为字典,对于样本:

var d = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(form);

var username = d["username"];
Run Code Online (Sandbox Code Playgroud)

你也可以在键之间循环:

foreach(var key in d.Keys)
{
   // check if the value is not null or empty.
   if (!string.IsNullOrEmpty(d[key])) 
   {
      var value = d[key];
      // code to do something with 
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 那时应该测试它,因为它会引发异常。 (2认同)

tjs*_*nce 12

这已经很老了,但我遇到了这个,想知道为什么没有提出以下建议:

var data = (IDictionary<string, object>)form;
Run Code Online (Sandbox Code Playgroud)

  • @Jay,如果您收到该消息,那么您并不是针对动态对象进行强制转换,而是尝试针对匿名类型进行强制转换,这不是同一件事。 (2认同)