Megosztás a következőn keresztül:


about_Hidden

Rövid leírás

A hidden kulcsszót ismerteti, amely elrejti az osztálytagokat az alapértelmezett Get-Member eredmények elől.

Hosszú leírás

Ha a hidden kulcsszót használja egy szkriptben, alapértelmezés szerint elrejti az osztály tagjait. A rejtett tagok nem jelennek meg a Get-Member parancsmag, az IntelliSense vagy a lapkimeneti eredmények alapértelmezett eredményei között. A hidden kulcsszóval elrejtett tagok megjelenítéséhez adja hozzá a Force paramétert egy Get-Member parancshoz.

A hidden kulcsszó elrejthető:

  • metódusok (beleértve a konstruktorokat is)
  • Események
  • alias tulajdonságai
  • egyéb tagtípusok (beleértve a statikus tagokat is)

A rejtett tagok nem jelennek meg a fül kiegészítésben vagy az IntelliSense-ben, kivéve ha a kiegészítés abban az osztályban történik, amely meghatározza a rejtett tagot.

Az új attribútum, System.Management.Automation.HiddenAttributelehetővé teszi, hogy a C#-kód ugyanazokkal a szemantikával rendelkezzen a PowerShellben.

A hidden kulcsszó olyan tulajdonságok és metódusok létrehozására használható egy osztályon belül, amelyeket nem feltétlenül szeretne, hogy az osztály felhasználói láthassanak vagy szerkeszthessenek.

A hidden kulcsszónak nincs hatása arra, hogy miként tekintheti meg vagy módosíthatja az osztály tagjait. A PowerShell összes nyelvi kulcsszavaihoz hasonlóan a hidden sem megkülönbözteti a kis- és nagybetűket, és a rejtett tagok továbbra is nyilvánosak.

A hidden kulcsszó és az egyéni osztályok a Windows PowerShell 5.0-ban jelentek meg.

Example

Az alábbi példa bemutatja, hogyan használhatja a hidden kulcsszót egy osztálydefinícióban. A Car osztály metódusa, Drive, rendelkezik egy tulajdonságával, Rides, amelyet nem kell megtekinteni vagy módosítani, mivel csupán megnő a MeghajtóAutó osztályba való meghívásának száma. Ez a metrika, ami nem fontos az osztály felhasználói számára (gondoljunk például arra, hogy amikor autót vásárol, nem kérdezi meg az eladót, hogy hány utakra vitték az autót).

Mivel az osztály felhasználóinak nem kell módosítaniuk ezt a tulajdonságot, elrejthetjük a tulajdonságot a Get-Member és az automatikus befejezési eredmények elől a hidden kulcsszó használatával.

Adja hozzá a hidden kulcsszót ugyanarra az utasítássorra, amelyen a tulajdonság és annak adattípusa is van. Bár a kulcsszó bármilyen sorrendben szerepelhet ezen a sorban, a hidden kulcsszóval való kezdés megkönnyíti később az összes rejtett tag azonosítását.

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
}

Most hozzon létre egy új példányt a Car osztályból, és mentse egy változóba, $TestCar.

$TestCar = [Car]::new()

Az új példány létrehozása után irányítsa a $TestCar változó tartalmát a Get-Member-be. Figyelje meg, hogy a Rides tulajdonság nem szerepel a Get-Member parancs eredményei között.

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

Most próbálkozzon újra a Get-Member futtatásával, de ezúttal adja hozzá a -Force paramétert. Vegye figyelembe, hogy az eredmények tartalmazzák a rejtett Rides tulajdonságot a többi, alapértelmezés szerint rejtett tag között.

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

Lásd még