为什么我的扩展方法不起作用?

Que*_*ire 0 .net c# entity-framework

我有一个扩展方法

public static class DbMigratorExtensions
{
    public static IEnumerable<string> DoCoolStuff(this DbMigrator dbMigrator, string[] first, string[] second)
    {
        // ... 
    }
}
Run Code Online (Sandbox Code Playgroud)

而我正试着用它

DbMigrator.DoCoolStuff
Run Code Online (Sandbox Code Playgroud)

但我得到了

'DbMigrator' does not contain a definition for ...
Run Code Online (Sandbox Code Playgroud)

我已经遵循了所有的要点

为什么我的扩展方法没有出现在我的测试类中?

另外我会注意到VS认可

DbMigratorExtensions.DoCoolStuff
Run Code Online (Sandbox Code Playgroud)

所以我不确定为什么它不能作为扩展方法.

Joh*_* Wu 5

扩展方法适用于对象实例,而不是类型.

所以你需要改变

DbMigrator.DoCoolStuff(...);
Run Code Online (Sandbox Code Playgroud)

var migrator = new DbMigrator();
var stringList = migrator.DoCoolStuff(...);
Run Code Online (Sandbox Code Playgroud)

如果DoCoolStuff()没有需要的情况下,它不应该是一个扩展方法.