tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: KeyedCollectionについて
投稿日: 2008/05/16(Fri) 17:41
投稿者よねKEN
> KeyedCollectionクラスを継承したクラスに型パラメータを定義して
> その型をKeyedCollectionのキーの型に指定すると例外が発生します。
>
>   Public Class MyCollection(Of TKey, TValue)
>       Inherits KeyedCollection(Of TKey, TValue)

何の例外がどこで発生していますか?(後述されているTypeLoadExceptionですか?)
例外が発生している箇所を見れば、問題箇所は特定できると思いますが。

KeyedCollectionコレクションを継承する場合、最低限、GetKeyForItemメソッドを
オーバーライドする必要がありますが、どのように実装していますか?

試しに以下のように空実装をした場合、とりあえずコンパイルは通ります。

Public Class MyCollection(Of TKey, TValue)
      Inherits KeyedCollection(Of TKey, TValue)

    Protected Overrides Function GetKeyForItem (item As TValue) As TKey
        ' 要実装
    End Function
End Class

しかし、具体的に実装しようとした場合、
TValue型がどんな型かを予め知っていないとこのメソッドを実装して
TKey型を返すのは困難なように思います。(条件により不可能ではないと思いますが)

そういう意味で、KeyedCollectionを継承する場合、
TKeyやTValueについては閉じた型(型パラメータを含まない具体的な型)を
指定して継承するものではないかと思います。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。