我有以下代码 -
var db = new DBEntities();
var entity = //get entity;
lblName.Text = string.Empty;
var names = entity.Names.OrderBy(x => x.Value).ToList();
for (var i = 0; i < names .Count; i++)
{
if (i == names .Count - 1) lblName.Text += names [i].Value + ".";
else lblName.Text += names [i].Value + ", ";
}
我将有几个像上面的For循环,它们将格式化要在标签中显示的值。我正在尝试用它来制作一个方法,当我传入集合和标签时会进行格式化,例如 -
void FormatValue(List<??> items, Label label)
{
//For loop
//Format value
}
我为List列出了什么?如何使其足够通用,以便我能够将其用于所有entity.Names
,entity.Xxx
,entity.Yyy
等?
答案 0 :(得分:1)
使方法本身通用,并允许调用者指定格式化程序:
void FormatValue<T>(List<T> items, Label label, Func<string, T> formatter)
{
foreach(var item in items)
{
label.Text += formatter(item);
}
}
然后您可以调用方法:
FormatValue<Name>(entity.Names.OrderBy(x => x.Value).ToList(),
lblName,
i => i.Value + ", ");