Метод перегрузки для одного экземпляра, а также IEnumerable <T> - PullRequest
0 голосов
/ 05 февраля 2019

Я создал две перегрузки метода для IEnumerable<T>, а также для одного экземпляра:

void DoSomething<T>(T arg)
   where T:class
{ // do something }
void DoSomething<T>(IEnumerable<T> enumerable)
   where T:class
{ // do something }

Проблема в том, что массивы и списки не распознаются как IEnumerable<T>, а в таких случаяхкак

DoSomething(new MyObject[]{o1,o2,o3})

перегрузка отдельного экземпляра вызывается с T, являющимся MyObject[].

У кого-нибудь есть хороший дизайн, который всегда приводил бы меня к перегрузке с IEnumerable<T> также для любого другого контейнера, реализующего IEnumerable<T>, такого как массивы и списки?

1 Ответ

0 голосов
/ 05 февраля 2019

вы можете попробовать это.В основном добавьте приведение перед вызовом метода.https://dotnetfiddle.net/Xwqp5n

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...