2013-03-28 2 views
3

У меня есть метод расширения моего проекта, который работает отлично:Неоднозначный вызов на метод расширения

public static class Extensions 
{ 
    public static bool IsBetween<T>(this T value, T low, T high) 
                 where T : IComparable<T> 
    { 
     return value.CompareTo(low) >= 0 && value.CompareTo(high) <= 0; 
    } 
} 

Теперь, когда я пытаюсь построить мой проект я получаю эту ошибку:

Error 1699 The call is ambiguous between the following methods or properties: 'BillingFormsApplication.Extensions.IsBetween(double, double, double)' and 'BillingFormsApplication.Extensions.IsBetween(double, double, double)'

Там только один метод IsBetween в файле Extensions ... И только один метод IsBetween во всем решении.

Я попытался очистить и перестроить решение. Все еще получаю ошибку.

Я мог удалить расширение и продолжать движение, но в прошлом это было очень удобно.

Добавлена ​​Frederic:

    if (percentCash.IsBetween(0, 99)) 
       { 

Интересно, если я бросаю эти цифры, чтобы удвоить, если это будет исправить. Я попробую это через минуту. Как:

if (percentCash.IsBetween((double)0, (double)99)) 
+0

Только что заметил, что подпись метода отсутствует «IComparable » после «где T:» Это была опечатка с моей стороны при добавлении вопроса, но в коде. – pStan

+3

попробуйте прокомментировать расширение и посмотрите, может ли intellisence разрешить какой-либо метод 'IsBetween' –

+2

Возможно, у вас есть ссылка на это расширение из нескольких DLL. –

ответ

2

Более чем вероятно, вы ссылаетесь на DLL, которая имеет тот же самый метод расширения определен или вы получили это определено где-то в вашем коде. Попробуйте найти поиск в файлах для поиска IsBetween и посмотреть, подходит ли оно. Если нет, посмотрите на библиотеки DLL, на которые вы ссылались, и посмотрите, не существует ли это расширение в одном из них.

Смежные вопросы