Czy można zapisać metodę rozszerzenia w PowerShell? lub, aby dodać nową metodę do istniejącego typu, np. [string], na żywo w czasie wykonywania?PowerShell, metody rozszerzeń i łatanie małp
Odpowiedz
Nie znam sposobu na łatanie typu za pomocą metody rozszerzenia. Ale to z pewnością możliwe załatać obiektu za pośrednictwem apletu polecenia add-zarejestrował
PS> $a = "foo"
PS> $a = add-member -in $a -memberType ScriptMethod -name Bar -value { $this + "bar" } -passthru
PS> $a.Foo()
foobar
EDIT Wyjaśnić całkowicie i całkowicie czytelny PowerShell Składnia :)
Kocham PowerShell, ale to naprawdę nie wymyślić składni tajemnicze od czasu do czasu.
- „-w”: Jest to skrót od inputObject i zasadniczo mówi dodać członka do tego
- „-memberType”: Istnieje wiele różnych typów wartości, które można dodać do obiektu wykonawczego w tym metody, właściwości notatek , code method, etc ... Zobacz "get-help add-member -full", aby uzyskać pełną listę.
- "-passthru": Weź obiekt, do którego dodano członka i popchnij go w dół. Bez tej flagi przypisanie byłoby przypisaniem i pustym potokiem do
$a
. - Wezwanie przyporządkowanie jest w zasadzie zapewnienie
$a
ma teraz metodę dodany
Jeśli masz metodę lub właściwość, którą chcesz dodać do określonego typu, można utworzyć rozszerzenia niestandardowe typu via typu adaptacyjnego PowerShell za system.
Niestandardowe rozszerzenie typu to plik XML, który opisuje właściwość lub metodę skryptu do typu, a następnie ładuje go do sesji PowerShell za pomocą polecenia cmdlet Update-TypeData.
Doskonałym przykładem tego można znaleźć na PowerShell Team Blog - Hate Add-Member? (PowerShell's Adaptive Type System to the Rescue)
Tak, to jest odpowiedź, której szuka oryginalny plakat. – JasonMArcher
Natknąłem się na tę metodę. Niepewny. Chciałbym zachować jak najwięcej w PowerSheldzie i XML. hmmm. Sądzę, że użyłbym tej metody, jeśli miałbym wiele "modów" do zrobienia. – BuddyJoe
- 1. Operator? i metody rozszerzeń
- 2. Python mock - łatanie metody bez utrudniania implementacji
- 3. Metody LINQ to metody rozszerzeń?
- 4. Metody rozszerzeń - Dekorator Wzór
- 5. Metody rozszerzeń klasy statycznej?
- 6. Metody niejednoznacznych rozszerzeń C#
- 7. metody rozszerzeń przeciążać wybór
- 8. Metody rozszerzeń do przodu kompatybilne
- 9. małpa łatanie vs class_eval?
- 10. Metody rozszerzeń w maszynopisie (system)
- 11. Używanie PowerShell do dodawania rozszerzeń do plików
- 12. MVC 4 i metody rozszerzeń z maszynką Razan
- 13. Metody rozszerzeń - IsNull i IsNotNull, dobre czy złe wykorzystanie?
- 14. RichTextBox BeginUpdate() EndUpdate() Metody rozszerzeń nie działa
- 15. W jaki sposób metody rozszerzeń łączą się
- 16. Jak wywołać metody statycznej PowerShell
- 17. Właściwe wcięcie w szablonach Django (bez łatania małp)?
- 18. Testowanie "małp" Qt - symulowanie losowych kliknięć i klawiszy
- 19. oprogramowanie do testowania małp dla aplikacji Windows
- 20. Konteksty i metody komunikacji między działaniem przeglądarki, skryptami tła i skryptami treści rozszerzeń chrome?
- 21. Dlaczego metody rozszerzeń nie działają w przypadku aliasingu przestrzeni nazw?
- 22. Czy mogę zastosować metody rozszerzeń do implementacji interfejsu?
- 23. Czy metody rozszerzeń C# umożliwiają przekazywanie parametrów przez odwołanie?
- 24. Porządkowanie metod rozszerzeń
- 25. Mieszanie metod rozszerzeń, generycznych i wyrażeń lambda
- 26. jak korzystać z metody Invoke w pliku rozszerzeń/metod?
- 27. W jaki sposób poprawiać kod małp, który jest automatycznie ładowany w Railsach?
- 28. Argumenty Powershell i logparser
- 29. Jak zainstalować/używać rozszerzeń i wtyczek Extjs?
- 30. Reguła java dla rozszerzeń i implementuje
+1 Mógłbyś rozwinąć składni trochę. $ A = add-member wygląda trochę dziwnie i co robią przełączniki -in i -passthru? – BuddyJoe
@Tyndall, zaktualizowano o komentarze – JaredPar
Dzięki JaredPar – BuddyJoe