7

当我在我的方法上方应用标签时,我得到了错误

类型 System.Runtime.CompilerServices.Extension 未定义。

这是我的样本

<System.Runtime.CompilerServices.Extension()> _
     Public Sub test()

End Sub

我哪里错了?

编辑~直接从这里的 MSDN 文章,同样的错误

Imports System.Runtime.CompilerServices

Module StringExtensions
     _
  Public Sub Print(ByVal aString As String)
        Console.WriteLine(aString)
    End Sub

End Module

我在我的项目中使用 Visual Studio 2008 和 3.5 框架。

解决方案〜该项目在2.0框架上。更改为 3.5 并且可以正常工作。

4

4 回答 4

8

IDE 指向哪个版本的 .net 框架?

此外,乍一看扩展方法的语法看起来不正确。

代码不完整。请将 using 语句放在示例中,以便任何人使用代码并编译它 - 以重现错误。

于 2008-12-02T02:33:38.277 回答
4

仅当以下情况之一为真时,您才会收到此错误

  1. 您没有使用 VS 2008 - 在 VS2008 中添加了扩展方法支持
  2. 您的代码没有对 System.Core.dll 的引用 - 也在 VS2008 中添加

你能检查这两个吗?我的怀疑是您正在尝试使用 VS2005 创建扩展方法。如果是这种情况,很遗憾不支持。

于 2008-12-02T03:37:49.723 回答
1

我会将命名空间添加到导入中,这样您就不必每次都输入它:

Imports System.Runtime.CompilerServices

<Extension()> _
Public Sub Test(ByVal Value As String)

End Sub

一旦在导入中拥有它,您就可以将 Extension 添加到每个方法的顶部,而不是整个方法。

正如 shahkalpesh 所说,您的扩展方法不完整,您需要添加要扩展的类型(请参阅代码第一个参数)。我刚玩了一下,发现如果你不提供一个类型来作为参数扩展,编译器会抛出一个错误。

于 2008-12-02T03:39:25.540 回答
0

用这个...

System.Runtime.CompilerServices.ExtensionAttribute

在您提到的命名空间中找不到任何名为 Extension 的内容。

于 2008-12-02T02:35:19.427 回答