powershell - 为什么我找不到在 PowerShell 中定义属性的位置?PSObject 类的源代码在哪里?
问题描述
我想在Github中找到PSObject.cs文件,但找不到。而且我还没有找到任何包含此类定义的文件(System.Management.Automation.PSObject)。在PowerShell的许多其他类的源代码中,我发现PSObject类被广泛使用,但是PSObject类的许多属性或方法在它的官方文档中没有记录。
我想找到PSObject来源的原因是,在下面的代码中,即使第 2 部分中的语句也可以正常工作,但是第 3 部分中两个语句的输出中不包含Name和Age属性。
# part 1
$obj = [pscustomobject] @{Name = "Joe"; Age = 42}
# part 2
$obj.psextended.Name # "Joe"
$obj.Name # "Joe"
$obj.psextended.Age # 42
$obj.Age # 42
# part 3
$obj.GetType().GetMembers() | select Name, MemberType
$obj.psobject.GetType().GetMembers() | select Name, MemberType
第 3 部分中第一条语句的输出是:
Name MemberType
---- ----------
ToString Method
GetType Method
Equals Method
GetHashCode Method
第 3 部分中第二条语句的输出是:
Name MemberType
---- ----------
get_BaseObject Method
get_Members Method
get_Properties Method
get_Methods Method
get_ImmediateBaseObject Method
get_TypeNames Method
op_Implicit Method
op_Implicit Method
op_Implicit Method
op_Implicit Method
op_Implicit Method
AsPSObject Method
ToString Method
ToString Method
Copy Method
CompareTo Method
Equals Method
GetHashCode Method
GetObjectData Method
GetType Method
.ctor Constructor
.ctor Constructor
.ctor Constructor
BaseObject Property
Members Property
Properties Property
Methods Property
ImmediateBaseObject Property
TypeNames Property
AdaptedMemberSetName Field
ExtendedMemberSetName Field
BaseObjectMemberSetName Field
似乎这两个属性都没有在 $obj(一个 PSCustomObject)或其包装器(一个 PSObject)中定义。
那么,Name和Age属性是在哪里定义的呢?当第 2 部分中的语句运行时发生了什么?换句话说,PowerShell ETS 内部发生了什么?为什么在 $obj 或 $obj.psobject 中没有定义“名称”$obj.Name
属性,但是有效?
而且,我在哪里可以找到PSObject类的真正完整源代码?
解决方案
推荐阅读
- oauth-2.0 - The request body must contain the following parameter: 'grant_type'
- python - Python获取鼠标点击纯文本程序无图形界面
- c - #C,输入总工资并获得净收入的程序
- python - 只为一些刻度标签着色
- django - 运行 Django 并将 Scikit-learn 模型加载到内存中的 Docker 容器中的 Nginx 504 超时错误
- c# - asp.net MVC 自定义 Authorize 属性,传递参数和方法细节
- javascript - 修复 no-await-in-loop lint 警告
- python - WHy can't i delete from my database on sqlite3?
- java - Application crashes on hitting sign up button
- python-imaging-library - PIL简单的图像粘贴 - 图像改变颜色