PowerShell'de uzantı yöntemi yazmak mümkün mü? veya çalışma zamanında [string] gibi mevcut bir türün üstüne yeni bir metot yerleştirmek mi istiyorsunuz?PowerShell, Uzantı Yöntemleri ve Maymun Yaması
cevap
Bir uzantı yöntemiyle bir türe yamalamanın bir yolunu bilmiyorum. Ama
PS> $a = "foo"
PS> $a = add-member -in $a -memberType ScriptMethod -name Bar -value { $this + "bar" } -passthru
PS> $a.Foo()
foobar
DÜZENLEME Ben PowerShell seviyorum ama gerçekten şifreli sözdizimi buluyor tamamen ve tamamen okunabilir PowerShell Syntax'i :)
açıklar eklenti üye komut üzerinden bir nesne yama kesinlikle mümkün zamandan zamana.
- "yani": Bu inputObject kısaltmasıdır ve esasen bu
- "-memberType" için üye eklemek diyor ki: Eğer yöntemlerle, not özellikleri içeren bir çalışma zamanı nesneye ekleyebilir değerlerin çok farklı türleri vardır , code method, etc ... Tam liste için "get-help add-member -full" kısmına bakın
- "-passthru": Sadece bir üye eklenmiş olan nesneyi alın ve boru hattını aşağı itin. Bu bayrak olmadan, atama
$a
'a atama ve boş boru hattı olacaktır. - atama çağrısı temel
$a
şimdi size belirli bir türde eklemek istediğiniz bir yöntem veya özellik varsa, PowerShell en adaptif türü aracılığıyla özel bir türü uzantısı oluşturabilir
eklendi yöntemi vardır sağlanmasıdır sistemi.
Özel tür bir uzantı, bir türe öznitelik veya komut dosyası yöntemini açıklayan ve daha sonra Update-TypeData cmdlet'i aracılığıyla PowerShell oturumuna yükleyen bir XML dosyasıdır.
bu büyük bir örnek biraz sözdizimi üzerinde durmak Could PowerShell Team Blog - Hate Add-Member? (PowerShell's Adaptive Type System to the Rescue)
Evet, bu, orijinal posterin aradığı cevaptır. – JasonMArcher
Bu yönteme rastladım. Emin değil. PowerShell'de XML'e karşı olabildiğince fazla tutmak istiyorum. hmmm. Ben çok ve "mods" bir sürü varsa, bu yöntemi kullanacağım sanırım. – BuddyJoe
- 1. Raylarda Maymun Yaması 3
- 2. Bir yapıda uzantı yöntemleri
- 3. Uzantı yöntemleri nasıl derlenir?
- 4. Resmi LINQ Uzantı Yöntemleri
- 5. Uzantı yöntemleri, statik sınıflardaki yöntemler ve Roslyn
- 6. Typescript (sistem) uzantı yöntemleri (sistem)
- 7. Nokta işareti yöntemleri çağrılamadı powershell
- 8. RichTextBox BeginUpdate() EndUpdate() Uzantı Yöntemleri Çalışmıyor
- 9. IObservable <> eksik .Subscribe uzantı yöntemleri
- 10. .NET'te uzantı yöntemleri nasıl "geçersiz kılınır"?
- 11. Farklı çerçevelerden uzantı yöntemleri için isim çarpışmaları
- 12. Hiç özel uzantı yöntemleri kullandınız mı?
- 13. XMLHttpRequest.prototype.open ve bağımsız değişkenlere "dokunmak" Maymun yama
- 14. Bir projenin hangi katmanında ortak uzantı yöntemleri bulunur?
- 15. Powershell IDE ve Powershell konsolu
- 16. Linq Yöntemleri
- 17. WiX yaması dosyaları doğru şekilde güncelleştirmiyor
- 18. .NET 2.0 veya 3.0'da uzantı yöntemleri ve LINQ kullanabilir miyim?
- 19. .msu uzantı dosyası nasıl açılır?
- 20. HtmlHelper yöntemleri ve RouteValueDictionary
- 21. Compose ve and Yöntemleri
- 22. Kotlin uzantısı yöntemleri nasıl düzenlenir
- 23. Maymun eklendiğinde orijinal yöntem nasıl aranır?
- 24. özel uzantı
- 25. Eklenti yöntemleri ve derleme zamanı denetimi
- 26. C# uzantısı yöntemleri?
- 27. Bir sınıfı parametre olarak geçirme ve yöntemleri devralma yöntemleri
- 28. Özet yöntemleri ve varargs açıklama
- 29. JQuery ve Kontrol Wrap ve Unwrap yöntemleri
- 30. PowerShell
+1 bulunabilir. $ A = add-üye biraz garip görünüyor ve -in ve -passthru anahtarları ne yapıyor? – BuddyJoe
@Tyndall, yorumlarla güncellendi – JaredPar
Teşekkürler JaredPar – BuddyJoe