C # Linq Неоднозначный вызов между System.Linq и System.Collections - PullRequest
0 голосов
/ 04 января 2019

Есть похожие вопросы к этому - но пока ни один из них не помог.

Я звоню:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

Затем в разделе моего кода VS указывает на ошибки в методах LINQ (.Last () и .Max ()). Я завис над .Max (). Ошибка говорит:

Вызов неоднозначен между следующими методами или свойствами: 'System.Linq.Enumerable.Max (System.Collections.Generic.IEnumerable )' и 'System.Linq.Enumerable.Max (System.Collections.Generic). .IEnumerable ) '

Я попытался переустановить все свои ссылки и пакеты, я перезапустил VS, IIS (это веб-сайт). VS распознает System.Linq, так что это не проблема ....

Я не могу понять, почему это все внезапные ошибки броска.

enter image description here

1 Ответ

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

Это может произойти, если где-нибудь в вашем коде или в сборке, на которую ссылаются, кто-то имел ужасную ужасную идею реализовать свои собственные методы расширения IEnumerable<T> и, не зная лучше, использовал то же пространство имен, что и те, которые предоставлены фреймворком:

  • Альфа-сборка сворачивает свои IEnumerable<T> методы расширения в System.Linq пространстве имен:

    namespace System.Linq {
        public static class MyEnumerable {
            public static T Max<T>(this IEnumerable<T> source) { //...
            }
        //... 
        }
    }
    
  • Сборка Чарли думает, что Alpha великолепна из-за некоторых других функций, которые она предоставляет, и ссылается на нее, совершенно не обращая внимания на неприятный сюрприз, который она скрывает внутри.

    using System.Linq; //woops
    
    namespace Charlie {
        class C {
            void Foo() {
                var l = new List<object>() { 1, 2, 3 };
                var m = l.Max() /*compile time error. Ambiguous call*/ } }
    }
    

Я не знаю, может ли это быть вашим случаем, но это вероятный сценарий. Другим потенциальным кандидатом может быть конфликт версий, но я не совсем уверен, возможно ли это в VS. Я никогда не сталкивался ни с чем подобным с System.* пространствами имен.

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