#powershell
Вопрос:
У меня 2 класса. Один базовый класс и один дочерний класс. Теперь я хочу знать все свойства, которые находятся в базовом классе.
class MyBase { [Int64]$BaseAttrib MyBase([Int64]$BaseAttrib) { $this.BaseAttrib = $BaseAttrib } } class MyExtended : MyBase { [Int64]$ExtendedAttrib MyExtended([Int64]$BaseAttrib,[Int64]$ExtendedAttrib) : base($BaseAttrib) { $this.ExtendedAttrib = $ExtendedAttrib } } $O1=New-Object -TypeName "MyExtended" -ArgumentList (0,1) #$o1 | Get-Member -Name "ExtendedAttrib" -MemberType Property ([MyBase]$o1) | Get-Member -Name "ExtendedAttrib" -MemberType Property ([MyBase]$o1).ExtendedAttrib
Я бы ожидал, что последняя строка не работает, так как базовый класс не имеет свойства ExtendedAttrib. Когда я выполняю get-член, он всегда возвращает список для дочернего класса и никогда для базового класса.
Если я это сделаю ([MyBase]$O1). IntelliSense отображает только те свойства, которые определены в базовом классе. Как я могу получить тот же список?
Тнх
Комментарии:
1.
$o1 | Get-Member
возвращает как базовые, так и унаследованные свойства класса. Чего вы хотите достичь ?
Ответ №1:
Попробуй $O1.GetType().BaseType.GetProperties()
Комментарии:
1. Спасибо. Это меня устраивает. Мне просто нужно создать коллекцию с параметрами дочернего класса, которая не должна содержать параметры родительского класса…