Я пытаюсь использовать метод расширения IEnumerable.Append, но Visual Studio 2017 жалуется, что он не существует. В то же время, может найти другие методы расширения, такие как Union. Это не имеет смысла для меня.
Кто-нибудь знает, чего мне не хватает?
- Я импортирую оба пространства имен System.Collections.Generic и System.Linq.
- У меня есть ссылка на System.Core в моем проекте.
- Я не могу найти какую-либо сборку с именем «System.Linq» для добавления ссылки в Менеджере ссылок, хотя я видел эту рекомендацию раньше.
- Единственные сборки, которые я вижу с "Linq" в названии, это System.Xml.Linq и System.Data.Linq. Попытка добавления тех, но это не помогло (и я не ожидал, что это)
- Хотя Visual Studio не может найти Append, похоже, что Resharper каким-то образом может. Подробнее об этом ниже.
Есть ли какая-то другая сборка, на которую я должен добавить ссылку? Или это какой-то более новый метод расширения? Я нацеливаюсь на .NET 4.7 и более поздние версии на Windows 10 box
Вот пример кода, который я собрал и поместил прямо в тот же исходный файл, чтобы проиллюстрировать проблему.
// Using statements.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
// Append fails to build but Union succeeds...???
IEnumerable<int> vals1 = new List<int>{ 0, 1, 2 };
IEnumerable<int> vals2 = new List<int>{ 3, 4, 5 };
IEnumerable<int> vals3 = vals1.Append(7); //<-- ERROR. "Append" not found
IEnumerable<int> vals4 = vals1.Union(vals2);
Одна странная вещь: чтобы попытаться это выяснить, я нажал «Перейти к определению» в названии функции «Объединение». Это привело меня к декомпилированной версии Enumerable.cs в кеше декомпилятора JetBrains. Там я увидел реализацию Union и увидел реализацию Append.
Это казалось странным. В качестве эксперимента я попытался отключить Resharper и снова нажать «Перейти к определению». На этот раз он отвез меня в Visual Studio, декомпилированную Enumerable.cs, в которой есть Union, но не имеет Append.