请注意:我知道a similar question已经有been answered。我花了一段时间才找到该问题/答案,因为它假设我认识到它特定地涉及扩展方法,而我一开始并没有。我在错误的假设下认为static using
功能可以only与扩展方法一起使用,因此,由于其感知的多余性,我在搜索时未包括在内。
这篇文章的目的是帮助那些不认识的人。
我有一些C#6中引入的using static directive
代码:
using static MyNs.MyExtensionMethods;
我正在尝试使用在MyNs.MyExtensionMethods
中定义的扩展方法,并且这种方法可以正常工作(总是如此):
foo.MyExtensionMethod();
但这不是:
MyExtensionMethod(foo);
我收到编译器错误“当前上下文中不存在名称'MyExtensionMethod'”。这是怎么回事?
如this answer所指示,您不能使用using static
指令来允许对扩展方法的无条件访问,而只能使用常规的静态方法(即,第一个参数上没有this
关键字)。该答案中明确说明了原因,因此在这里我不再重复。