Можно ли передать в функцию универсальный IEnumerable? - PullRequest
1 голос
/ 09 августа 2011

У меня есть эта функция:

private void Pager(IEnumerable<t> tEnum)
{
   ...
}

, и я хотел бы передать другой IEnumerable, например IEnumerable<MyObject1> или IEnumerable<MyObject2>.

Возможно ли это?

Ответы [ 3 ]

4 голосов
/ 09 августа 2011

Конечно. Просто сделайте метод общим:

private void Pager<T>(IEnumerable<T> tEnum)
{
   ...
}

Если вы посмотрите на методы расширения LINQ-to-objects, они тоже так поступают (без дополнительных this до IEnumerable<T> согласно синтаксису метода расширения.)

2 голосов
/ 09 августа 2011

Вы можете сделать всю функцию общей:

private void Pager<T>(IEnumerable<T> tEnum)
{
   // here T can be anything
}

// you can call it like:
Pager(new int[]{10,20});
Pager(new string[]{"meep","x"});
0 голосов
/ 09 августа 2011

Может быть, так?

private void Pager<t>(IEnumerable<t> tEnum)
...