VB.NETにてGenericが使えないときのtips

問題

.NET Framework 1.1 VB.NETで開発するとGenericが使えないので、*1
コレクションを使いたいときはキャストしてあげないといけない。
しかしVB.NETでキャストを書くと

Dim order As Order = CType(OrderList(i),Order)

っていう風に長くなるので量が多いとめんどう。

対策

ArrayListを拡張することで毎回キャストする手間が省ける

OrderList
Option Explicit On 
Option Strict On

Public Class OrderList
  Inherits ArrayList

  Default Public Shadows ReadOnly Property Item(ByVal index As Integer) As Order
    Get
      Return CType(MyBase.Item(index), Order)
    End Get
  End Property

  Public Shadows Function Add(ByVal value As Order) As Integer
    Return MyBase.Add(value)
  End Function

  Public Shadows Sub Insert(ByVal index As Integer, ByVal value As Order)
    MyBase.Insert(index, value)
  End Sub

End Class

対策後

Dim order As Order = OrderList(i)

短くなったね

まとめ

Genericがない世界なんて嫌いだ。

*1:.NET Framework 2.0から使える