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