gpt4 book ai didi

c# - 遍历对象集合 c#

转载 作者:行者123 更新时间:2023-12-03 19:08:45 29 4
gpt4 key购买 nike

我将一个对象作为参数传递给我的函数,该对象包含一个类型为 FeatureItemInfo 的对象列表。 .

FeatureItemInfo是一个具有以下属性的类:

 Name, Value , Type , DisplayOrder, Column

我想遍历列表并显示每个 <FeatureItemInfo> 的属性对象。

这是我到目前为止能想到的。但是我无法获取 featureIteminfo 的值。

这是我的功能:

 public static TagBuilder BuildHtml(StringBuilder  output, object model)
{
if (model != null)
{
foreach (var indexedItem in model.GetType().GetProperties().Select((p, i) => new { item = p, Index = i }))
{
var Colval = (int)indexedItem.item.GetType().GetProperty("Column").GetValue(indexedItem.item, null);
......
}

}
}

最佳答案

应该是:

 (int)indexedItem.item.GetValue(model, null);

您的 item 属性 PropertyInfo目的。你打电话GetValue()在其上,传递类的实例,以获取该属性的值。

indexedItem.item.GetType().GetProperty("Column")

以上代码将在 PropertyInfo 对象上查找属性“Column”(提示:PropertyInfo 没有“Column”属性)。


更新:根据您在下面的评论,model 实际上是对象的集合。如果是这种情况,您可能应该在函数签名中更明确一点:

public static TagBuilder BuildHtml( StringBuilder output, IEnumerable model )

现在,让我们看一下您的循环:

foreach (var indexedItem in model.GetType().GetProperties().Select((p, i) => new { item = p, Index = i }))

这实际上是做什么的:

IEnumerable<PropertyInfo> l_properties = model.GetType().GetProperties();
var l_customObjects = l_properties.Select(
(p, i) =>
new {
item = p, /* This is the PropertyInfo object */
Index = i /* This is the index of the PropertyInfo
object within l_properties */
}
)
foreach ( var indexedItem in l_customObjects )
{
// ...
}

这是从模型对象中获取属性列表,然后迭代这些属性(或者更确切地说,是包装这些属性的匿名对象)。

我认为您真正要找的是这样的东西:

// This will iterate over the objects within your model
foreach( object l_item in model )
{
// This will discover the properties for each item in your model:
var l_itemProperties = l_item.GetType().GetProperties();
foreach ( PropertyInfo l_itemProperty in l_itemProperties )
{
var l_propertyName = l_itemProperty.Name;
var l_propertyValue = l_itemProperty.GetValue( l_item, null );
}

// ...OR...

// This will get a specific property value for the current item:
var l_columnValue = ((dynamic) l_item).Column;
// ... of course, this will fail at run-time if your item does not
// have a Column property, unlike the foreach loop above which will
// simply process all properties, whatever their names
}

关于c# - 遍历对象集合 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348963/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com