PowerShell、拡張メソッド、およびモンキーパッチ
-
20-08-2019 - |
質問
PowerShellで拡張メソッドを書くことは可能ですか?または、[string]のような既存のタイプの上に新しいメソッドを実行時にボルトで固定しますか?
解決
拡張メソッドを使用して型にパッチを適用する方法がわかりません。ただし、add-memberコマンドレットを使用してオブジェクトにパッチを適用することは確かに可能です
PS> $a = "foo"
PS> $a = add-member -in $a -memberType ScriptMethod -name Bar -value { $this + "bar" } -passthru
PS> $a.Foo()
foobar
編集完全かつ完全に読み取り可能なPowerShell構文を説明してください:)
PowerShellは大好きですが、ときどき不可解な構文を思い付きます。
- <!> quot; -in <!> quot ;:これはinputObjectの短縮形であり、基本的にこれにメンバーを追加します
- <!> quot; -memberType <!> quot ;:ランタイムオブジェクトに追加できる値には、メソッド、ノートプロパティ、コードメソッドなど、さまざまな種類があります。<!> quot; getを参照してください。 -help add-member -full <!> quot;完全なリスト
- <!> quot; -passthru <!> quot ;:メンバーが追加されたばかりのオブジェクトを取得し、パイプラインにプッシュします。このフラグがなければ、割り当ては
$a
にパイプラインを割り当てて空にします。 - 割り当ての呼び出しは、基本的に<=>に追加したメソッドが含まれるようにすることです
他のヒント
特定の型に追加するメソッドまたはプロパティがある場合、PowerShellの適応型システムを介してカスタム型拡張を作成できます。
カスタムタイプ拡張は、プロパティまたはスクリプトメソッドをタイプに記述し、Update-TypeDataコマンドレットを介してPowerShellセッションにロードするXMLファイルです。
この好例は PowerShellチームブログ-追加メンバーが嫌いですか? (PowerShellのレスキューへの適応型システム)
所属していません StackOverflow