我在某个命名空间下的程序集中声明了一个扩展方法,它是一个非常常见的助手:
using System;
namespace Common {
public static class GenericServiceProvider {
public static T GetService<T>(this IServiceProvider serviceProvider) {
return (T)serviceProvider.GetService(typeof(T));
}
}
}
现在在不同的程序集和命名空间中,我试图从实现 IServiceProvider 的类中访问此扩展方法:
using System;
using Common;
namespace OtherNamespace {
class Bar: IServiceProvider {
void Foo() {
GetService<IMyService>(); // doesn't compile
this.GetService<IMyService>(); // compiles
}
}
}
如您所见,我无法直接调用通用扩展方法,它甚至没有出现在 IntelliSense 中。但是,如果我在调用之前添加“this”,它就可以正常工作。
这是在使用 .NET 4 的 Visual Studio 2010 中。
这是正常的还是我做错了什么?谢谢。