2008-12-02 177 views
7

當我申請我的上述方法的標籤我得到的是沒有定義VB.NET擴展方法

類型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框架。

解決方案〜該項目是在2.0框架。更改爲3.5,它的作品。

回答

8

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

此外,乍一看擴展方法的語法看起來不正確。

代碼不完整。請將示例中的using語句放在任何人使用該代碼並編譯它 - 重現錯誤。

+0

它是2.0。我不得不改變到3.5,它的工作。 – 2008-12-02 03:54:02

+0

擴展是在.NET 3中引入的,因此它在.NET 2.X項目中不受支持。 – awe 2011-11-08 08:17:30

+0

有點額外的工作2。0將支持擴展方法。我有一個VS 2010的dll編譯爲.Net 2.0 Framework。我按照以下兩個鏈接獲取信息:http://www.codeproject.com/Articles/31260/Extension-Methods-in-VB-NET在MSDN雜誌-http://msdn.microsoft .com/en-us/magazine/cc163317.aspx#S7 – JohnL 2014-12-19 22:09:56

0

使用此...

System.Runtime.CompilerServices.ExtensionAttribute

找不到任何東西在你提到的命名空間被叫分機。

3

如果下列條件之一爲真,

  1. 您沒有使用VS 2008,您應該只收到此錯誤 - 在VS2008中添加擴展方法支持
  2. 您的代碼不會有系統參考.Core.dll - 也添加在VS2008中

你能檢查這兩個嗎?我的supsicion是你試圖使用VS2005創建一個擴展方法。如果是這種情況,不幸的是不支持。

0

我會命名空間增加進口,這樣你就不必每次都輸入它:一旦你在你的進口,你可以只添加擴展到每一個方法的頂部,而不是

Imports System.Runtime.CompilerServices 

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

End Sub 

整個事情。

由於shahkalpesh說你的擴展方法不完整,你將需要添加你想要擴展的類型(見代碼第一個參數)。我只是玩了一段時間,發現如果你沒有提供一個類型來擴展參數,編譯器會拋出一個錯誤。