about_Hidden
Breve descrizione
Descrive la parola chiave , che nasconde i membri della hidden
classe dai risultati predefiniti Get-Member
.
Descrizione lunga
Quando si usa la hidden
parola chiave in uno script, i membri di una classe vengono nascosti per impostazione predefinita. I membri nascosti non vengono visualizzati nei risultati predefiniti del Get-Member
cmdlet, intelliSense o nei risultati di completamento tramite tabulazione. Per visualizzare i membri nascosti con la hidden
parola chiave , aggiungere il parametro Force a un Get-Member
comando .
La hidden
parola chiave può nascondere:
- metodi (inclusi i costruttori)
- eventi
- proprietà alias
- altri tipi di membri (inclusi i membri statici)
I membri nascosti non vengono visualizzati nel completamento tramite tabulazione o IntelliSense, a meno che il completamento non venga eseguito nella classe che definisce il membro nascosto.
Il nuovo attributo System.Management.Automation.HiddenAttribute consente al codice C# di avere la stessa semantica all'interno di PowerShell.
La hidden
parola chiave è utile per la creazione di proprietà e metodi all'interno di una classe che non devono necessariamente consentire agli utenti della classe di visualizzare o facilmente modificare.
La hidden
parola chiave non ha alcun effetto sul modo in cui è possibile visualizzare o apportare modifiche ai membri di una classe. Analogamente a tutte le parole chiave del linguaggio in PowerShell, hidden
non fa distinzione tra maiuscole e minuscole e i membri nascosti sono ancora pubblici.
La hidden
parola chiave, insieme alle classi personalizzate, è stata introdotta in Windows PowerShell 5.0.
ESEMPIO
Nell'esempio seguente viene illustrato come usare la hidden
parola chiave in una definizione di classe. Il metodo della classe Car , Drive, ha una proprietà, corse, che non è necessario visualizzare o modificare poiché è semplicemente alto il numero di volte in cui Drive viene chiamato sulla classe Car . Tale metrica non è importante per gli utenti della classe (si consideri, ad esempio, che quando si acquista un'auto, non si chiede al venditore il numero di unità che l'auto è stata presa).
Poiché non è necessario consentire agli utenti della classe di modificare questa proprietà, è possibile nascondere la proprietà dai Get-Member
risultati di completamento automatico e usando la hidden
parola chiave .
Aggiungere la hidden
parola chiave immettendola nella stessa riga dell'istruzione della proprietà e del relativo tipo di dati. Anche se la parola chiave può essere in qualsiasi ordine in questa riga, l'avvio dell'istruzione con la hidden
parola chiave semplifica in seguito l'identificazione di tutti i membri nascosti.
class Car
{
# Properties
[String] $Color
[String] $ModelYear
[int] $Distance
# Method
[int] Drive ([int]$miles)
{
$this.Distance += $miles
$this.rides++
return $this.Distance
}
# Hidden property of the Drive method
hidden [int] $rides = 0
}
Creare ora una nuova istanza della classe Car e salvarla in una variabile , $TestCar
.
$TestCar = [Car]::new()
Dopo aver creato la nuova istanza, inviare tramite pipe il contenuto della $TestCar
variabile a Get-Member
. Si noti che la proprietà rides non è tra i membri elencati nei risultati del Get-Member
comando.
PS C:\Windows\system32> $TestCar | Get-Member
TypeName: Car
Name MemberType Definition
---- ---------- ----------
Drive Method int Drive(int miles)
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Color Property string Color {get;set;}
Distance Property int Distance {get;set;}
ModelYear Property string ModelYear {get;set;}
Provare ora a eseguire Get-Member
di nuovo, ma questa volta aggiungere il -Force
parametro .
Si noti che i risultati contengono la proprietà delle corse nascoste , tra gli altri membri nascosti per impostazione predefinita.
PS C:\Windows\system32> $TestCar | Get-Member -Force
TypeName: Car
Name MemberType Definition
---- ---------- ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1
psadapted MemberSet psadapted {Color, ModelYear, Distance,
psbase MemberSet psbase {Color, ModelYear, Distance,...
psextended MemberSet psextended {}
psobject MemberSet psobject {BaseObject, Members,...
Drive Method int Drive(int miles)
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
get_Color Method string get_Color()
get_Distance Method int get_Distance()
get_ModelYear Method string get_ModelYear()
get_rides Method int get_rides()
set_Color Method void set_Color(string )
set_Distance Method void set_Distance(int )
set_ModelYear Method void set_ModelYear(string )
set_rides Method void set_rides(int )
ToString Method string ToString()
Color Property string Color {get;set;}
Distance Property int Distance {get;set;}
ModelYear Property string ModelYear {get;set;}
rides Property int rides {get;set;}