Entity Framework 4: универсальный тип возвращаемого значения для метода - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть следующий код -

    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.Names, entity.Xxx, entity.Yyy и т. Д.

1 Ответ

1 голос
/ 04 апреля 2011

Сделайте сам метод универсальным и разрешите вызывающей стороне указать форматер:

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;");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...