トップ回答者
Staticクラスのジェネリックメソッドの呼び出しについて

質問
回答
-
ジェネリックのスタティックメソッドなら以下のページに呼び出し方法の記述がありました。Calling generic static method in PowerShell - Stack Overflowリフレクションを使って呼ぶことになります。Action<T>デリゲートを作るのは難しそうですね。炎の作品 ― flamework.net ― » Windows PowerShell で delegateここにスクリプトブロックをデリゲートに変換するスクリプトが公開されています。
(追記)
New-Delegate.ps1を使用してArray.ForEach<T>(<T>[] array, System.Action<T> action)を実行するにはこのような感じになるかと思います。
$method=[array].getmethods()|?{$_.name -eq "ForEach"}
[string[]]$array="b","a","c","a"
$genericMethod=$method.MakeGenericMethod([string])
$action= .\New-Delegate.ps1 System.Action``1[System.String] {Write-Host $args[0]}
$genericMethod.invoke(@(),@($array,$action))
- 回答としてマーク ごんきち 2011年3月26日 1:42
すべての返信
-
ジェネリックのスタティックメソッドなら以下のページに呼び出し方法の記述がありました。Calling generic static method in PowerShell - Stack Overflowリフレクションを使って呼ぶことになります。Action<T>デリゲートを作るのは難しそうですね。炎の作品 ― flamework.net ― » Windows PowerShell で delegateここにスクリプトブロックをデリゲートに変換するスクリプトが公開されています。
(追記)
New-Delegate.ps1を使用してArray.ForEach<T>(<T>[] array, System.Action<T> action)を実行するにはこのような感じになるかと思います。
$method=[array].getmethods()|?{$_.name -eq "ForEach"}
[string[]]$array="b","a","c","a"
$genericMethod=$method.MakeGenericMethod([string])
$action= .\New-Delegate.ps1 System.Action``1[System.String] {Write-Host $args[0]}
$genericMethod.invoke(@(),@($array,$action))
- 回答としてマーク ごんきち 2011年3月26日 1:42