Могу ли я динамически найти все подклассы класса в powershell - PullRequest
1 голос
/ 24 апреля 2020

У меня есть абстрактный базовый класс, для которого я хотел бы динамически список всех подклассов (которые в данный момент загружаются). Тем не менее, я не смог найти образец этого. Я хотел бы что-то похожее на:

 $subclasses = [AbstractRule].get-subclasses

Любые советы приветствуются.

1 Ответ

3 голосов
/ 24 апреля 2020

Перечислите все типы в текущем домене приложения, затем используйте Type.IsSubclassOf(), чтобы найти интересующий вас:

$superType = [AbstractRule]
$subTypes = [AppDomain]::CurrentDomain.GetAssemblies().GetTypes() |Where {$_.IsSubclassOf($superType)}

Это также будет включать определенные производные типы, определенные используя классы PowerShell (если есть)


Вы также можете ограничить свой поиск только сборкой, содержащей [AbstractRule], если вы подозреваете, что все подклассы находятся в одном и том же:

$subTypes = $superType.Assembly.GetTypes() |Where {$_.IsSubclassOf($superType)}
...