当我在我的方法上方应用标记时,我收到错误
未定义类型System.Runtime.CompilerServices.Extension。
这是我的样本
<System.Runtime.CompilerServices.Extension()> _
Public Sub test()
End Sub
我哪里错了?
编辑〜直接来自MSDN文章here,同样的错误
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 Framework。
解决方案〜该项目在2.0 Framework上。更改为3.5,它可以工作。
答案 0 :(得分:8)
IDE指向什么版本的.net框架?
此外,乍一看,扩展方法的语法看起来不正确。
代码不完整。请在示例中使用using语句供任何人使用代码并编译它 - 以重现错误。
答案 1 :(得分:4)
如果满足下列条件之一,您应该只会收到此错误
你能检查这两个吗?我的supsicion是你试图使用VS2005创建一个扩展方法。如果是这种情况,很遗憾不支持。
答案 2 :(得分:0)
使用此...
System.Runtime.CompilerServices.ExtensionAttribute
在您提到的命名空间中找不到任何名为Extension的内容。
答案 3 :(得分:0)
我会将命名空间添加到导入中,因此您不必每次都输入它:
Imports System.Runtime.CompilerServices
<Extension()> _
Public Sub Test(ByVal Value As String)
End Sub
在导入中使用后,只需将Extension添加到每个方法的顶部而不是整个方法。
由于shahkalpesh说你的扩展方法不完整,你需要添加你想要扩展的类型(参见代码first parm)。我刚玩了一个游戏,发现如果你没有提供一个类型作为参数扩展,那么编译器会抛出一个错误。