gpt4 book ai didi

c# - 是否有通用方法来迭代和打印未知集合中的值?

转载 作者:太空狗 更新时间:2023-10-29 20:53:26 25 4
gpt4 key购买 nike

比方说,我有一个这样的 Print 方法:

private static void Print(IEnumerable items)
{
// Print logic here
}

我想将一个集合类传递给此 Print 方法,它应该像表格一样打印所有字段。例如,我的输入集合可以是“Persons”或“Orders”或“Cars”等。

如果我将“Cars”集合传递给 Print 方法,它应该打印“Car”详细信息列表,例如:品牌、颜色、价格、类别等。

直到运行时我才知道集合的类型。我尝试使用 TypeDescriptorsPropertyDescriptorCollection 实现了解决方案。但是,我认为这不是一个好的解决方案。有没有其他方法可以使用表达式或泛型来实现这一点?

最佳答案

你可以像这样实现打印:

static void Print<T>(IEnumerable<T> items)
{
var props = typeof(T).GetProperties();

foreach (var prop in props)
{
Console.Write("{0}\t", prop.Name);
}
Console.WriteLine();

foreach (var item in items)
{
foreach (var prop in props)
{
Console.Write("{0}\t", prop.GetValue(item, null));
}
Console.WriteLine();
}
}

它只是循环遍历类的每个属性以打印属性的名称,然后打印每个项目并为每个项目打印属性的值。

我认为你应该在这里使用泛型(而不是其他答案中的建议);您希望集合中的项目属于单一类型,以便您可以打印表格标题。

对于表格格式,您可以查看 this question 的答案.

关于c# - 是否有通用方法来迭代和打印未知集合中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5113982/

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