Condividi tramite


about_Hidden

Descrizione breve

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, si nascondono i membri di una classe per impostazione predefinita. I membri nascosti non vengono visualizzati nei risultati predefiniti del Get-Member cmdlet, intelliSense o nei risultati di completamento della scheda. 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 della scheda o IntelliSense, a meno che il completamento non si verifichi 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. Come 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 perché semplicemente alti 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 quante unità è stata presa).

Poiché non è necessario che gli utenti della classe modifichino questa proprietà, è possibile nascondere la proprietà dai Get-Member risultati di completamento automatico 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 un secondo momento 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;}

A questo momento, provare 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;}

Vedi anche