Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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;}