Dela via


about_Hidden

Kort beskrivning

Beskriver nyckelordet hidden , som döljer klassmedlemmar från standardresultat Get-Member .

Lång beskrivning

När du använder nyckelordet hidden i ett skript döljer du medlemmarna i en klass som standard. Dolda medlemmar visas inte i standardresultatet för cmdleten Get-Member , IntelliSense eller flikslutresultatet. Om du vill visa medlemmar som du har dolt med nyckelordet hidden lägger du till force-parametern i ett Get-Member kommando.

Nyckelordet hidden kan döljas:

  • metoder (inklusive konstruktorer)
  • händelser
  • aliasegenskaper
  • andra medlemstyper (inklusive statiska medlemmar)

Dolda medlemmar visas inte i tabbavslut eller IntelliSense om inte slutförandet sker i klassen som definierar den dolda medlemmen.

Med det nya attributet System.Management.Automation.HiddenAttribute kan C#-koden ha samma semantik i PowerShell.

Nyckelordet hidden är användbart för att skapa egenskaper och metoder i en klass som du inte nödvändigtvis vill att användare av klassen ska kunna se eller enkelt kunna redigera.

Nyckelordet hidden påverkar inte hur du kan visa eller göra ändringar i medlemmar i en klass. Precis som alla språknyckelord i PowerShell hidden är det inte skiftlägeskänsligt och dolda medlemmar är fortfarande offentliga.

Nyckelordet hidden , tillsammans med anpassade klasser, introducerades i Windows PowerShell 5.0.

EXEMPEL

I följande exempel visas hur du använder nyckelordet hidden i en klassdefinition. Bilklassmetoden, Drive, har en egenskap, åkattraktioner, som inte behöver ses eller ändras eftersom den bara räknar antalet gånger som Drive anropas i klassen Bil. Det mått som inte är viktigt för klassens användare (tänk till exempel på att när du köper en bil frågar du inte säljaren om hur många enheter bilen har tagits).

Eftersom det inte finns något behov av att användare av klassen ändrar den här egenskapen kan vi dölja egenskapen från Get-Member och automatiskt slutföranderesultat med hjälp av nyckelordet hidden .

Lägg till nyckelordet hidden genom att ange det på samma instruktionsrad som egenskapen och dess datatyp. Även om nyckelordet kan vara i valfri ordning på den här raden gör det enklare för dig att senare identifiera alla medlemmar som du har dolt genom att starta -instruktionen med nyckelordet hidden .

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
}

Skapa nu en ny instans av klassen Bil och spara den i en variabel, $TestCar.

$TestCar = [Car]::new()

När du har skapat den nya instansen skickas innehållet i variabeln $TestCar till Get-Member. Observera att egenskapen rides inte finns bland de medlemmar som anges i kommandoresultatet 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;}

Försök nu att köra Get-Member igen, men lägg till parametern den -Force här gången. Observera att resultatet innehåller egenskapen dolda åkattraktioner , bland andra medlemmar som är dolda som standard.

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

Se även