You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell如何获取类继承场景下基类定义的所有属性列表

原因说明

PowerShell 中的[MyBase]$O1强制类型标注属于静态类型提示,仅作用于语法分析阶段(也就是你看到的IntelliSense提示逻辑),不会修改对象本身的实际运行时类型——你的实例本质上还是MyExtended类的对象,所以运行时直接访问、或者用Get-Member默认读取的都是对象实际类型的全量成员,自然能获取到子类的ExtendedAttrib属性。

获取和IntelliSense一致的基类属性列表

你可以直接通过基类的反射元数据读取定义的成员,和IntelliSense的判断逻辑完全一致:

  • 如果你只需要基类的所有属性名:
[MyBase].GetProperties(
    [System.Reflection.BindingFlags]::Public -bor 
    [System.Reflection.BindingFlags]::Instance
).Name
  • 如果你需要基于现有实例筛选出仅基类定义的属性,可以结合反射结果过滤Get-Member的输出:
# 先取基类定义的所有属性名
$basePropNames = [MyBase].GetProperties(
    [System.Reflection.BindingFlags]::Public -bor 
    [System.Reflection.BindingFlags]::Instance
).Name

# 过滤实例的属性列表,仅保留基类定义的部分
([MyBase]$O1) | Get-Member -MemberType Property | Where-Object Name -in $basePropNames

如果需要进一步限制运行时也无法访问子类属性,你可以基于基类属性列表把实例封装成PSCustomObject,常规场景下直接读取类型元数据已经能满足需求。


内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:15:04