[英]How do I add object to an array property of an anonymous object in 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 }
}
像這樣嘗試:
var body = new { items = new[]{ new { } }.ToList() };
foreach(Modelos.Produto p in carrinho.Items)
{
body.items.Add( /* ... */ );
}
但是請注意,這種編碼方式旨在解決一些非常具體的問題,即使用舊的COM庫和內部LinQ查詢。 如果您嘗試超越此范圍,您將很快發現它具有明顯的缺點。
這些缺點之一(我稱其為功能)是您仍在使用固定類型,這意味着該集合初始值設定項中的new { }
成為了通用列表的模板。
如果您真的別無選擇,並且強烈建議使用其他方法(例如List<T>
等),則可以使用Array.Resize()
調整數組大小並在其末尾添加一個新項目:
var body = new { items = new[]{ new { } } };
foreach(Modelos.Produto p in carrinho.Items)
{
var array = body.items;
Array.Resize(ref array, array.Length + 1);
body.items[body.items.Length - 1] = new {}; // or whatever you want to add here
}
var list = new List<Test>();
for (int i = 1; i < 20; i++)
{
list.Add(new Test($"descrition {i}"));
}
var listDynamic = new List<object>();
foreach (var item in list)
{
var properties = item.GetType().GetProperties();
object expando = new ExpandoObject();
var p = expando as IDictionary<string, object>;
foreach (var property in properties)
{
var value = item.GetType().GetProperty(property.Name).GetValue(item, null);
p[property.Name] = value;
}
listDynamic.Add(p);
}
我認為這可以解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.