Udostępnij za pośrednictwem


about_Hidden

Krótki opis

Opisuje słowo kluczowe hidden, które ukrywa składowe klasy przed domyślnymi wynikami Get-Member.

Długi opis

W przypadku używania słowa kluczowego hidden w skrypcie domyślnie ukrywasz członków klasy. Ukryci członkowie nie są wyświetlani w domyślnych wynikach polecenia cmdlet Get-Member, IntelliSense ani wynikach uzupełniania kart. Aby wyświetlić członków ukrytych słowem kluczowym hidden, dodaj parametr Force do polecenia Get-Member.

Słowo kluczowe hidden może ukryć:

  • metody (w tym konstruktory)
  • Zdarzenia
  • właściwości aliasu
  • inne typy elementów członkowskich (w tym statyczne elementy członkowskie)

Ukryte elementy członkowskie nie są wyświetlane w uzupełnianiu tabulatora lub funkcji IntelliSense, chyba że uzupełnienie występuje w klasie definiującej ukrytego elementu członkowskiego.

Nowy atrybut System.Management.Automation.HiddenAttributeumożliwia korzystanie z tego samego semantyki kodu języka C# w programie PowerShell.

Słowo kluczowe hidden jest przydatne do tworzenia właściwości i metod w klasie, których niekoniecznie chcesz, aby użytkownicy klasy widzieli lub mogli łatwo edytować.

Słowo kluczowe hidden nie ma wpływu na sposób wyświetlania lub wprowadzania zmian w składowych klasy. Podobnie jak wszystkie słowa kluczowe języka w programie PowerShell, hidden nie uwzględnia wielkości liter, a ukryte elementy członkowskie są nadal publiczne.

Słowo kluczowe hidden wraz z klasami niestandardowymi zostało wprowadzone w programie Windows PowerShell 5.0.

Example

W poniższym przykładzie pokazano, jak używać słowa kluczowego hidden w definicji klasy. Metoda klasy Car, Drive, ma właściwość Rides, która nie musi być widoczna ani zmieniana, ponieważ jedynie określa liczbę wywołań Drive klasy Car. Ta metryka, która nie jest ważna dla użytkowników tej klasy (rozważ, że przy zakupie samochodu nie pytasz sprzedawcy, ile razy samochód był używany).

Ponieważ użytkownicy klasy nie muszą zmieniać tej właściwości, możemy ukryć właściwość przed Get-Member i automatycznymi wynikami uzupełniania przy użyciu słowa kluczowego hidden.

Dodaj słowo kluczowe hidden, wprowadzając je w tym samym wierszu instrukcji co właściwość i jego typ danych. Mimo że słowo kluczowe może być w dowolnej kolejności w tym wierszu, rozpoczęcie instrukcji od słowa kluczowego hidden ułatwia późniejsze zidentyfikowanie wszystkich ukrytych elementów.

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
}

Teraz utwórz nowe wystąpienie klasy Car i zapisz je w zmiennej $TestCar.

$TestCar = [Car]::new()

Po utworzeniu nowego wystąpienia należy przekierować zawartość zmiennej $TestCar do Get-Member. Zwróć uwagę, że właściwość rides nie należy do elementów członkowskich wymienionych w wynikach polecenia Get-Member.

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;}

Teraz spróbuj ponownie uruchomić Get-Member, ale tym razem dodaj parametr -Force. Zwróć uwagę, że wyniki zawierają ukrytą właściwość Rides między innymi elementami członkowskimi, które są domyślnie ukryte.

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;}

Zobacz także