stati c Использование не распознает имя метода, говоря, что имя не существует в текущем контексте - PullRequest
0 голосов
/ 21 февраля 2020

ОБРАТИТЕ ВНИМАНИЕ: Мне известно, что на аналогичный вопрос уже дан ответ . Мне потребовалось некоторое время, чтобы найти этот вопрос / ответ, поскольку предполагается, что я осознал, что он , в частности , включает методы расширения, чего я сначала не делал. У меня было неверное предположение, что функция static using может только использоваться с методами расширения, поэтому из-за ее кажущейся избыточности я не включил ее при поиске.

Цель этого поста - помочь людям, которые этого не понимают.


У меня есть код с using static directive, представленный в C# 6:

using static MyNs.MyExtensionMethods;

Я пытаюсь использовать метод расширения, определенный в MyNs.MyExtensionMethods, и он работает (как всегда):

foo.MyExtensionMethod();

Но это не так:

MyExtensionMethod(foo);

Я получаю ошибку компилятора «Имя« MyExtensionMethod »не существует в текущем контексте». Что происходит?

1 Ответ

1 голос
/ 21 февраля 2020

Как указано в этом ответе , вы не можете использовать директиву using static, чтобы разрешить неквалифицированный доступ к методам расширения , только к обычным методам stati c (т.е. без this ключевое слово по первому аргументу). Причина ясно указана в этом ответе, поэтому я не буду дублировать его здесь.

...