Не могу получить доступ к моему методу расширения - PullRequest
12 голосов
/ 01 декабря 2011

Ища способ проверить, содержится ли строка в другом игнорирующем верхнем / нижнем регистре, я обнаружил, it :

Работает нормально.Затем я попытался поместить его в мое StringExtensions пространство имен.

namespace StringExtensions
{

    public static class StringExtensionsClass
    {
        //... 

        public static bool Contains(this string target, string toCheck, StringComparison comp)
        {
            return target.IndexOf(toCheck, comp) >= 0;
        }
    }
}

, а затем:

using StringExtensions;

...

if (".. a".Contains("A", StringComparison.OrdinalIgnoreCase))

но я получаю следующую ошибку:

Нет перегрузки для метода 'Contains', принимает '2' аргументов

Как это исправить?

Ответы [ 2 ]

22 голосов
/ 01 декабря 2011

Если вы хотите использовать свое расширение, добавьте это с помощью оператора:

using StringExtensions;

Из-за способа объявления методов Extension Visual Studio не сможет найти их сам по себе, а обычный метод Contains принимает один аргумент, поэтому вы исключение.

6 голосов
/ 01 декабря 2011

Я нашел свою ошибку:

для этой работы с типом dynamic необходимо использовать cast до string. ToString() метод не достаточен.

if (((string)result.body).Contains(foo, StringComparison.OrdinalIgnoreCase))

Работает нормально сейчас.Еще раз спасибо stackoverflow.:)

...