Поделиться через


about_Hidden

Краткое описание

Описывает ключевое слово hidden, которое скрывает члены класса от результатов Get-Member по умолчанию.

Длинное описание

При использовании ключевого слова hidden в скрипте вы по умолчанию скрываете члены класса. Скрытые члены не отображаются в результатах выполнения Get-Member командлета Get-Member, IntelliSense или завершения вкладки. Чтобы отобразить элементы, которые вы скрыли с помощью ключевого слова hidden, добавьте в команду параметр Get-Member.

Ключевое слово hidden может скрыть:

  • методы (включая конструкторы)
  • События
  • Свойства псевдонима
  • другие типы элементов (включая статические элементы)

Скрытые элементы не отображаются в завершении вкладки или IntelliSense, если только завершение не происходит в классе, определяющем скрытый элемент.

Новый атрибут, System.Management.Automation.HiddenAttribute, позволяет коду C# иметь ту же семантику в PowerShell.

Ключевое слово hidden полезно для создания свойств и методов в классе, которые не обязательно хотят, чтобы пользователи класса могли просматривать или легко изменять.

Ключевое слово hidden не влияет на возможность просмотра или изменения членов класса. Как и все ключевые слова языка в PowerShell, hidden не учитывает регистр, а скрытые элементы по-прежнему открыты.

Ключевое слово hidden вместе с пользовательскими классами было представлено в Windows PowerShell 5.0.

Example

В следующем примере показано, как использовать ключевое слово hidden в определении класса. Метод класса Car, Drive, имеет свойство, Rides, который не требуется просматривать или изменять, так как он просто превышает количество раз, когда Drive вызывается в классе Car. Метрика, которая не важна для пользователей класса (например, подумайте о том, что, покупая автомобиль, вы не будете спрашивать продавца о количестве совершённых поездок на машине).

Так как пользователям класса не требуется изменять это свойство, можно скрыть свойство от Get-Member и автоматических результатов завершения с помощью ключевого слова hidden.

Добавьте ключевое слово hidden, введя его в ту же строку инструкции, что и свойство и его тип данных. Хотя ключевое слово может располагаться в любом порядке в этой строке, использование ключевого слова 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
}

Теперь создайте новый экземпляр класса Car и сохраните его в переменной $TestCar.

$TestCar = [Car]::new()

После создания нового экземпляра передайте содержимое переменной $TestCar в Get-Member. Обратите внимание, что свойство Rides не является одним из членов, перечисленных в результатах команды 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;}

Теперь попробуйте запустить Get-Member еще раз, но на этот раз добавьте параметр -Force. Обратите внимание, что результаты содержат скрытое свойство Rides среди других элементов, скрытых по умолчанию.

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

См. также