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


about_Hidden

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

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

Подробное описание

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

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

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

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

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

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

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

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

Пример

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

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

См. также