2011-07-05 7 views
0

VB.NETで汎用メソッドを使用しようとしていますが、汎用タイプのパラメータを受け入れることができません。私はちょうど "「t」は「フレンド」なので、アクセスブルではないということになります。GenericのFriendであるためアクセスできません

私のメソッドシグネチャは次のとおりです。

Public Shared Function GetOffset(ByVal coll As IEnumerable(Of t), ByVal offset As Integer, ByVal limit As Integer) As IEnumerable(Of t) 

答えて

1

私が見た限りでは、タイプパラメータを指定していません。それはすべきではありません:従来、これはTいうよりtだろう

Public Shared Function GetOffset(Of t)(ByVal coll As IEnumerable(Of t), _ 
    ByVal offset As Integer, ByVal limit As Integer) As IEnumerable(Of t) 

注意。

+0

ありがとうございます。 VB.NETは、その型パラメータを3回宣言しなければならないという点で、C#よりも冗長であるようです。 – Echilon

+1

@Echilon:いいえ、タイプパラメータを一度宣言するだけです*あなたは*タイプパラメータを2回以上使用しています... C#と同じように: 'public static IEnumerable GetOffset (IEnumerable coll、int offset、int limit) ' - それでも' 'が3回現れることがわかります。 –

0

はあなたが別のアセンブリ内のクラスという名前のトンを持っていますか?フレンドは、そのアセンブリでのみアクセスできることを意味します。公開することを検討してください。その後、他のアセンブリからもアクセスできます。

パブリック:このアセンブリを参照するすべてのアセンブリにアクセスできます。 プロテクト:このクラスを継承するすべてのクラスからアクセス可能です。 フレンド:同じアセンブリ内のすべてのクラスにアクセスできます。 秘密:このクラスにのみアクセスできます。 Protected Friend:このアセンブリのすべてのクラスにアクセス可能で、このクラスからも継承します。

tが任意のクラスを意味する場合は、IEnumerable(Of T)(大文字のT)を使用します。

+0

いいえ、それは単なるASP.NET Webサイトです。 – Echilon

+0

tとは何ですか?クラス?または一般的なパラメータですか?後者の場合、Tを試してください。前者の場合は、tを公開する必要があります。 – Peter