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

发布于 2024-10-30 13:15:52 字数 725 浏览 1 评论 0原文

我有以下代码 -

    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
    }

我为列表传入什么。如何使这个足够通用,以便我能够将它用于所有 entity.Namesentity.Xxxentity.Yyy ETC?

I have the following code -

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

I'll have several For loops like above which will format the value to be displayed in a label. I'm trying to make a method out of it which will do the formatting when I pass in the collection and the label, something like -

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

What do I pass in for the List. How do I make this generic enough so I'll be able to use it for all entity.Names, entity.Xxx, entity.Yyy etc?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温柔嚣张 2024-11-06 13:15:52

使方法本身通用并允许调用者指定格式化程序:

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 + ",  ");

Make the method itself generic and allow the caller to specify a formatter:

void FormatValue<T>(List<T> items, Label label, Func<string, T> formatter)
{
    foreach(var item in items)
    {
        label.Text += formatter(item);
    }
}

You can then call the method like:

FormatValue<Name>(entity.Names.OrderBy(x => x.Value).ToList(),
                  lblName,
                  i => i.Value + ",  ");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文