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


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 ключевое слово в определении класса. Метод класса CarDrive имеет свойство 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()

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

См. также раздел