Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
1 / 1 / 0
Регистрация: 04.06.2014
Сообщений: 37

Неоднозначность методов

02.02.2019, 11:42. Показов 4313. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые программисты. Такой вопрос: в проекте подключаю using System.Linq, а так же использую другую (самописную) библиотеку, назовём её MyService. В этих двух подключаемых ссылках содержатся абсолютно идентичные методы, такие как FirstOrDefault() или ElementAt(). При вызове какого-нибудь метода возникает ошибка:

Неоднозначный вызов следующих методов или свойств: "System.Linq.Enumerable.FirstOrDefault<T Source> (System.Collections.Generic.IEnumerable< TSource>, int)" и "System.Linq.Enumerable.FirstOrDefault<T Source> (System.Collections.Generic.IEnumerable< TSource>, int)".

Как исправить подобное? Удаление из проекта System.Linq не покатит, оно также нужно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.02.2019, 11:42
Ответы с готовыми решениями:

Неоднозначность с делегатами
почему не компилится код? array.Select(Enumerable.Last).Where('а'.Equals).Count() Неоднозначный вызов следующих методов или свойств:...

Неоднозначность в вызове метода
Есть такой код на C#, и вопрос: почему срабатывает метод Foo с аргументом типа object, а не с int? class Class { public virtual void...

Неоднозначность между методами
Здравствуйте. Есть метод. В нём создаю объект, у которого есть 1 метод по имени Quit. Однако VS пишет предупреждение со словами...

2
 Аватар для Immo
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
02.02.2019, 11:47
приведи к нужному типу, перед вызовом метода
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
02.02.2019, 12:34
Цитата Сообщение от Alice Liddell Посмотреть сообщение
Как исправить подобное?
Такое лучше не допускать.
Не следует использовать имена, которые используются в фреймворке.
Выхода три, как минимум:
Первый: переименовать методы библиотеки (если есть возможность, конечно), например, в MyFirstOrDefault или SuperFirstOrDefault и т. д.
Второй: вызывать методы расширения как статические методы статического класса.
Третий: написать статический адаптер для конфликтной библиотеки.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System.Collections.Generic;
using System.Linq;
using MyNamespace;
 
namespace ConsoleApp2
{
   class Program
   {
      static void Main(string[] args)
      {
         IEnumerable<int> set = new[] { 3, 1, 2 };
         int n1 = Enumerable.FirstOrDefault(set); //явный вызов метода LINQ
         int n2 = MyService.FirstOrDefault(set); //явный вызов кастомного метода расширения
         int n3 = set.MyFirstOrDefault(); //вызов кастомного метода расширения через адаптер
      }
   }
 
 
   public static class MyServiceAdapter
   {
      public static T MyFirstOrDefault<T>(this IEnumerable<T> source)
      {
         return MyService.FirstOrDefault(source);
      }
   }
}
 
namespace MyNamespace
{
   public static class MyService
   {
      public static T FirstOrDefault<T>(this IEnumerable<T> source)
      {
         return Enumerable.FirstOrDefault(source);  //лишь для примера
      }
   }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.02.2019, 12:34
Помогаю со студенческими работами здесь

Реализовать ввод исходных данных, расчет и вывод данных в виде методов класса. В Main только создание объектов и вызов методов
Всем привет) помогите пожалуйста с заданием &quot;Реализовать ввод исходных данных, расчет и вывод данных в виде методов класса. В Main только...

Непонятная неоднозначность.
TString IntToHex(unsigned long int x); int Main() { TString s; unsigned long int i; cin&gt;&gt;i; s=IntToHex(1); ... ...

неоднозначность, explicit
Добрый вечер. написал такой шаблонный класс: template &lt;class T&gt; class Container { private: ...... public: ...

Виртуальная неоднозначность
Не понимаю пример из книги С.Праты: class B { public: short q(); }; class C : virtual public B { public:

Неоднозначность декларации
Итак уважаемые знатоки: class Foo{ public: Foo(){}; }; Foo Bar(); Внимание вопрос: как уважающий себя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru