「プライベートメンバにアクセスする」で、プライベートなメソッドを実行する Invoke-PrivateMethod をご紹介しました。
今回のスクリプトは、それの発展系で、ジェネリックメソッドに対応したものです。
一般の使用においては、プライベートメソッドの実行よりもジェネリックメソッドの実行に使われる方が多いのではないかと思い、スクリプト名を変更しています。
用例1
(1).ToString(‘D4’) と等価です。
PS> Invoke-Method (1) ToString('D4')
0001
0001
用例2
Array.ForEach を呼び出します。
PS> $delegate = New-Delegate Action[int] {Write-Host ($args[0] * $args[0])}
PS> Invoke-Method ([Array]) ForEach([int[]](1..5), $delegate) -GenericType int
1
4
9
16
25
PS> Invoke-Method ([Array]) ForEach([int[]](1..5), $delegate) -GenericType int
1
4
9
16
25
用例3
System.Linq.Enumerable の Repeat メソッドを呼び出します。ジェネリック型が System.Object の場合、-GenericType を省略できます。
PS> Invoke-Method ([Linq.Enumerable]) Repeat('Hello', 3)
Hello
Hello
Hello
Hello
Hello
Hello