c #: конвертировать объект в общий список - PullRequest
0 голосов
/ 18 мая 2018

У меня есть структура данных, в которой переменная имеет тип object.Тем не менее, я знаю, что во время выполнения этот объект определенно будет List<T>, где T должно охватывать несколько случаев (например, int, string, ...).В следующем коде я хотел бы использовать List<T> -специфичные функциональные возможности, такие как функции Linq.

При следующей проверке, я уверен, это список:

if (constantExpression.Value.GetType().GetGenericTypeDefinition() == typeof(List<>)) 
{
    // Want to use Linq here
}

Это возможно?К сожалению, я не нашел ничего полезного в Интернете.

1 Ответ

0 голосов
/ 18 мая 2018

Если вы можете обрабатывать свой список как List<object>(), вы можете сделать следующее:

var listOfObjects = ((IEnumerable)constantExpression.Value).Cast<object>();

Это далеко не идеально, но это, вероятно, лучшее, что вы можете получить, если не хотитеприбегнуть к использованию отражения или dynamic, как это предлагается в комментариях.

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