【发布时间】:2009-10-07 13:15:55
【问题描述】:
我需要将不同的 IEnumerables 发送到 Printer 对象。
然后,此打印机对象将在 foreach 循环中对它们执行某些操作。
class Printer
{
public Printer(IEnumerable list)
{
foreach (var enumerable in list)
{
//DO STUFF
}
}
}
这让我可以向打印机对象发送任何可枚举,例如 List<T>。
比如
var list = new List<string> {"myList"};
new Printer(list); //mylist
这很好用。
但是如果我发送Dictionary<T, T>,例如:
var dictionary = new Dictionary<int, string> {{1, "mydict"}};
new Printer(dictionary); //[1, mydict]
它将有一个键和一个值。不过,我想要的是单独访问 foreach 循环内的 Value 属性。我只能访问可枚举的对象,它没有我可以使用的属性。
现在,如果数据类型 T 是一个包含多个属性的对象(这适用于两个示例)。我如何能够在我的 foreach 循环中使用这些属性?
老实说,我是否必须创建一个构造函数的重载,用于我可能发送给它的每个可能的数据类型?
另外,我需要在 foreach 中做的所有事情都不依赖于任何数据类型 - 因为它不会操纵所有内容。不过,我确实需要访问所有属性。
另外,这只是示例代码,实际上并不是我在应用程序中使用的生产代码。
【问题讨论】:
-
你不会在第一个例子中遇到同样的问题吗?毕竟你可以得到一个 List
,其中 T 是一个包含多个属性的复杂对象? -
你确定它接受 IEnumerable 而不是 IEnumerable
? -
是的,这就是我在“现在该怎么办”段落中笨拙地试图解释的内容。我会尝试编辑我的帖子以使其更清晰。
标签: c# ienumerable