实体框架4:方法的通用返回类型

时间:2011-04-04 15:25:37

标签: entity-framework-4

我有以下代码 -

    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 + ",&nbsp;";
    }

我将有几个像上面的For循环,它们将格式化要在标签中显示的值。我正在尝试用它来制作一个方法,当我传入集合和标签时会进行格式化,例如 -

void FormatValue(List<??> items, Label label)
    {
        //For loop
        //Format value
    }

我为List列出了什么?如何使其足够通用,以便我能够将其用于所有entity.Namesentity.Xxxentity.Yyy等?

1 个答案:

答案 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 + ", &nbsp;");