首页 > 解决方案 > 如何在 c# 中将对象添加到匿名对象的数组属性中

问题描述

我对 c# 的大部分研究都是在早期版本中进行的,我对这种代码不是很熟悉。我得到了这个剪断的波纹管,但我很难将产品动态添加到匿名对象的 items 属性中。

  var body = new
     {
        items = new[] {
         new {
            name = "Product 1",
            value = 1000,
            amount = 2
             }

           },
        shippings = new[] {
           new {
            name = "Default Shipping Cost",
            value = 100
               }
             }
      };

这个想法是:

 var body = new { items =  new[]{ new { }  } };

        foreach(Modelos.Produto p in carrinho.Items)
        {
            body.items // add elements  { name = p.name }
        }

标签: c#anonymous-typesc#-6.0

解决方案


试试这样:

var body = new { items =  new[]{ new { }  }.ToList() };

foreach(Modelos.Produto p in carrinho.Items)
{
    body.items.Add( /* ... */ );
}

但请注意,这种编码风格旨在解决一些非常具体的问题,即使用旧的 COM 库和内部 LinQ 查询。如果你试图超越它,你很快就会发现它有很大的缺点。

其中一个缺点(我称之为功能)是您仍在使用固定类型,这意味着new { }集合初始化程序内部成为通用列表的模板。


推荐阅读