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

プロジェクトでVisualStudio2008と3.5Frameworkを使用しています。

解決策〜プロジェクトは2.0フレームワーク上にありました。3.5に変更し、動作します。

4

4 に答える 4

8

IDE が対象としている .net フレームワークのバージョンは?

また、一見、拡張メソッドの構文が間違っているように見えます。

コードが不完全です。誰でもコードを使用してコンパイルできるように、例に using ステートメントを入れて、エラーを再現してください。

于 2008-12-02T02:33:38.277 に答える
4

次のいずれかに該当する場合にのみ、このエラーが発生するはずです。

  1. VS2008を使用していません-拡張メソッドのサポートが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

インポートに追加したら、すべてではなく、すべてのメソッドの先頭に拡張機能を追加できます。

shahkalpeshが拡張メソッドが不完全であると言ったように、拡張したいタイプを追加する必要があります(コードの最初のパラメーターを参照)。ちょっと遊んだところ、パラメータとして拡張する型を指定しないと、コンパイラがエラーをスローすることがわかりました。

于 2008-12-02T03:39:25.540 に答える
0

これを使って...

System.Runtime.CompilerServices.ExtensionAttribute

あなたが言及した名前空間に Extension と呼ばれるものが見つかりませんでした。

于 2008-12-02T02:35:19.427 に答える