任意のジェネリクス型を動的に生成

リフレクションによる動的ジェネリクス型の生成が下記サイトで紹介されていた。
任意のジェネリック型を動的に生成

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です