Sdílet prostřednictvím


o_Skrytý

Krátký popis

Popisuje klíčové slovo hidden, které skryje členy třídy z výchozích Get-Member výsledků.

Dlouhý popis

Když ve skriptu použijete klíčové slovo hidden, ve výchozím nastavení skryjete členy třídy. Skryté členy se nezobrazují ve výchozích výsledcích rutiny Get-Member, IntelliSense nebo dokončování pomocí tabulátoru. Pokud chcete zobrazit členy, které jste skryli pomocí klíčového slova hidden, přidejte do příkazu parametr Get-Member.

Klíčové slovo hidden může skrýt:

  • metody (včetně konstruktorů)
  • události
  • vlastnosti aliasu
  • jiné typy členů (včetně statických členů)

Skryté členy nejsou viditelné při automatickém doplňování nebo IntelliSense, pokud k doplnění nedojde přímo ve třídě, která definuje skrytý člen.

Nový atribut, System.Management.Automation.HiddenAttribute, umožňuje kódu jazyka C# mít stejnou sémantiku v PowerShellu.

Klíčové slovo hidden je užitečné pro vytváření vlastností a metod v rámci třídy, které nemusí nutně chtít, aby uživatelé třídy viděli nebo snadno mohli upravovat.

Klíčové slovo hidden nemá žádný vliv na to, jak můžete zobrazit nebo provádět změny členů třídy. Stejně jako u všech klíčových slov jazyka v PowerShellu se hidden nerozlišují malá a velká a skryté členy jsou stále veřejné.

Klíčové slovo hidden spolu s vlastními třídami bylo zavedeno ve Windows PowerShellu 5.0.

Example

Následující příklad ukazuje, jak použít klíčové slovo hidden v definici třídy. Metoda třídy Car, Drive, má vlastnost, Jízdy, která nemusí být zobrazena nebo změněna, protože pouze sčítá, kolikrát Drive je volána na Car třídy. Ukazatel, který není pro uživatele dané kategorie důležitý (zvažte například, že když kupujete auto, neptáte se prodejce, kolikrát bylo auto řízeno).

Protože uživatelé třídy tuto vlastnost mění jen zřídka, můžeme tuto vlastnost skrýt z Get-Member a výsledků automatického dokončování pomocí klíčového slova hidden.

Přidejte klíčové slovo hidden zadáním na stejném řádku příkazu jako vlastnost a jeho datový typ. I když klíčové slovo může být v libovolném pořadí na tomto řádku, spuštění příkazu s klíčovým slovem hidden usnadňuje pozdější identifikaci všech členů, které jste skryli.

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
}

Nyní vytvořte novou instanci třídy Car a uložte ji do proměnné $TestCar.

$TestCar = [Car]::new()

Po vytvoření nové instance předáte obsah proměnné $TestCar do Get-Member. Všimněte si, že vlastnost Rides není mezi členy uvedenými ve výsledcích příkazu 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;}

Teď zkuste spustit Get-Member znovu, ale tentokrát přidejte parametr -Force. Všimněte si, že výsledky obsahují skryté Jízdy vlastnost, mimo jiné členy, které jsou ve výchozím nastavení skryté.

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

Viz také