6

バックグラウンド

この投稿では、Powershell で拡張メソッドを使用する方法について説明します

http://community.bartdesmet.net/blogs/bart/archive/2007/09/06/extension-methods-in-windows-powershell.aspx

これを誰かが C# で行っていることと比較してください。「someAssembly を使用する」を追加すると、すべての拡張メソッドが読み込まれます。

私の質問

これは Powershell 2.0 でよりシンプルになりましたか。もしそうなら、Powershell 2.0 で拡張メソッドを使用するにはどうすればよいでしょうか? 公開されているドキュメントを確認し、CTP をインストールしましたが、何も役に立ちません。

4

1 に答える 1

3

V2 では簡単にはなりませんが、気付いていないかもしれない拡張メカニズムがあります。

問題の一部は、PowerShell のジェネリックの処理 (またはその欠如) にあると思います。

また、拡張メソッドを適用するには、型指定されたコレクションを適用する必要がありますが、これは PowerShell では困難です。動的言語としての PowerShell は、さまざまな型のコレクションの構築をサポートしており、ほとんどのコレクションはオブジェクトの配列として表されます。拡張メソッドでは、パラメーターがコレクションの型から推測され、述語が正しい型であることが確認される必要があります。

懸念事項が LINQ のような関数である場合は、オブジェクト コレクションを操作する際に同じ機能を提供するコマンドレットが多数あります。

PowerShell の拡張型システムを使用すると、xml ファイルを追加するか、既存のファイルを変更することで、さまざまな型にメソッドを追加できます (新しいファイルを作成することをお勧めします)。Jeffrey Snover は、このブログ投稿で Object クラスに ScriptProperty を追加してこれを行う方法を示しています。

まったく同じではありませんが、仕事を成し遂げることができます。

于 2009-01-11T00:08:11.723 に答える