Statik sınıfta çalışmak için $this
'a ihtiyacım var! Bunu nasıl başarabilirim? Herhangi bir geçici çözüm var mı? Sınıf bağlamında Get-PSCallStack
'un geri dönüşünü analiz ettim ve yararlı bir şey bulamadım.PowerShell statik sınıf yöntemi içinde geçerli sınıf adı/nesnesi nasıl edinilir?
(a) günlüğe kaydetme ve (b) aynı sınıftaki diğer statik yöntemleri tekrar tekrar isminden bahsetmeden çağırmak için buna ihtiyacım var.
örnek kod (PowerShell V5):
class foo {
static [void]DoSomething() {
[foo]::DoAnything() #works
#$this.DoAnything #not working
$static_this = [foo]
$static_this::DoAnything() #works
}
static [void]DoAnything() {
echo "Done"
}
}
[foo]::DoSomething()
Yazım hatası: _not available_ –
Teknik olarak bu sorunun bir kopyası: http://stackoverflow.com/questions/2113069/c-sharp-getting-its-own-class-name. PowerShell'de olduğu gibi C# 'de sorduğun şeyi (statik yöntemler için) yapmak gibi dağınık. –
@Chris Dent: '[System.Reflection.MethodBase] :: GetCurrentMethod() DeclaringType' işe yaramaz. GetCurrentMethod() 'nin öznitelikleri, yöntemin dinamik olduğunu gösterir. Neyse, C# DoAything'den doSomething'den, tam anlamıyla, "statik boşluk" DoSomething() {DoAnything(); } '. Tam olarak bu PowerShell'de eksik. –