У меня есть способ расширения
public static class DbMigratorExtensions
{
public static IEnumerable<string> DoCoolStuff(this DbMigrator dbMigrator, string[] first, string[] second)
{
// ...
}
}
и я пытаюсь использовать это как
DbMigrator.DoCoolStuff
но я получаю
'DbMigrator' does not contain a definition for ...
Я следил за всеми пунктами маркированного списка
Почему мой метод расширения не отображается в моем тестовом классе?
Также отмечу, что VS распознает
DbMigratorExtensions.DoCoolStuff
поэтому я не уверен, почему он не работает как метод расширения.
Здесь есть оператор using (именно так он распознает DbMigratorExtensions.DoCoolStuff)
затем убедитесь, что DbMigrator не является типом, а является переменной. C# чувствителен к регистру.





Методы расширения работают с экземплярами объектов, а не с типами.
Итак, вам нужно изменить
DbMigrator.DoCoolStuff(...);
к
var migrator = new DbMigrator();
var stringList = migrator.DoCoolStuff(...);
Если DoCoolStuff() не нужно экземпляр, это не должен быть метод расширения.
Если вам нужен метод статического расширения, C# в настоящее время его не поддерживает. Вы можете создавать только нестатические методы расширения. Возможно, в какой-то момент это изменится.
обязательно поместите инструкцию
usingповерх вашего файла cs. какому пространству имен принадлежитDbMigratorExtensions?