扩展方法未被认可

Chi*_*ago 45 c# extension-methods

如果扩展方法存在于导入的程序集中,有什么必要?我在类库项目中构建了一个,但在我的web项目中无法识别它引用了库.库中的所有其他类和方法都是值得尊重和可见的,但这种扩展方法不是.在库中使用时,扩展方法是可见的.

dtb*_*dtb 62

引用包含具有扩展方法的类的程序集是不够的.您需要在要使用扩展方法的每个源文件中导入包含该类的命名空间.

例如,要使用LINQ到对象,您需要引用System.Core程序集并导入System.Linq命名空间(其中包含带有LINQ扩展方法的Enumerable类):

using System.Linq;
Run Code Online (Sandbox Code Playgroud)

  • 你的扩展方法和包含方法的类是公共的吗?您是否仔细检查过您在方法签名中没有忘记"this"?如果不使用扩展方法语法来调用方法,它是否有效? (7认同)
  • 这在项目之间存在某种类型的Visual Studio引用问题.已删除和恢复的引用已清除... (3认同)
  • @ dtb,哈!我的扩展类是静态的但不公开.谢谢! (3认同)
  • 刚刚关闭并重新打开 Visual Studio,它就出现了。 (2认同)

Arj*_*nbu 17

您确定扩展方法是公开的吗?


小智 15

如果在不使用Extension语法时可以调用Extension方法,请使用Format:

this.MyExtensionMethod()
Run Code Online (Sandbox Code Playgroud)

这清除了我在VS2010中没有找到类的扩展方法的问题.


dot*_*NET 7

对于在 VB.NET 中遇到同样问题的任何人,请注意不仅扩展方法,而且模块本身都需要标记为Public,否则您将收到此错误。至少在 VS2015 社区中是如此,在其他版本中也可能如此。