我可以在 powershell 中动态找到 class 的所有子 classes

Can I dynamically find all subclasses of a class in powershell

我有一个抽象基类,我想要一个包含所有动态子类(当前已加载)的列表。但是,我还没有找到这方面的样本。我想要类似于:

 $subclasses = [AbstractRule].get-subclasses

如有任何提示,我们将不胜感激。

枚举当前应用领域中的所有类型,然后使用Type.IsSubclassOf()找到您感兴趣的类型:

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

这还将包括使用 PowerShell 类(如果存在)定义的自定义派生类型


如果您怀疑所有子类 都在同一个集合中,您也可以将搜索限制为仅包含 [AbstractRule] 的程序集:

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