リフレクションによる動的ジェネリクス型の生成が下記サイトで紹介されていた。
任意のジェネリック型を動的に生成
VB.net版は以下。
Private Shared Function DynamicCreateGenericType(
ByVal genericType As Type,
ByVal genericArgMetadata() As Type) As Object
Dim dg As Object = Nothing
If genericType.IsGenericType AndAlso
genericType = genericType.GetGenericTypeDefinition() Then
Dim genericTypeArgumentCount =
genericType.GetGenericArguments().Length
If genericTypeArgumentCount = genericArgMetadata.Length Then
Dim gtd = genericType.GetGenericTypeDefinition()
Dim dgtype As Type =
gtd.MakeGenericType(genericArgMetadata)
dg = Activator.CreateInstance(dgtype)
End If
End If
Return dg
End Function