使用 .NET Framework ArrayList 类 - 如何查找方法

使用 .NET Framework ArrayList 类 - 如何查找方法

如何找到 ArrayList 类具有哪些方法和属性?

我是一名初级系统管理员,正在自学 Powershell。我对编码的了解,就如同狗对时钟的了解一样。
在 Powershell 中,我可以将变量或命令通过管道传输到 cmdlet Get-Member,这将列出我可以使用的所有方法和属性。
但是,如果我这样做:
$a = New-Object System.Collections.ArrayList
$a | gm

我得到以下信息:
gm : You must specify an object for the Get-Member cmdlet....

我正在阅读 Technet Powershell 每周提示指南,它们展示了几种方法,例如RemoveRemoveRange
如何使用 Powershell 找到与 .NET 类相关的所有方法?这可用吗,还是我需要在其他地方查找?每次我想使用各种方法时,我是否都必须进行 Google 搜索?

我想说的是,教我钓鱼。谢谢。

答案1

答案2

来自 Get-Member 帮助:

——当您将对象集合通过管道传输到 Get-Member 时,Get-Member 会获取集合中各个对象的成员,例如字符串数组中每个字符串的属性。

-- 当使用InputObject提交对象集合时,Get-Member获取该集合的成员,例如字符串数组中的数组的属性。

因此,您可以使用以下方法从 ArrayList 对象中获取成员:

,$a | gm

这是因为您向 Get-Member 传递了一个 ArrayList 对象数组(本例中只有一个)。如果您只传递了 ArrayList,Get-Member 将尝试在 ArrayList 的成员上运行,但 ArrayList 为空,因此会出现错误。

当 ArrayList 有一些成员时,这一点更加明显,如下所示:

$a = [System.Collections.ArrayList](1..3)
$a | gm

返回

   TypeName: System.Int32

Name        MemberType Definition
----        ---------- ----------
CompareTo   Method     int CompareTo(System.Object value), int CompareTo(int value), int IComparable.CompareTo(Syste...
Equals      Method     bool Equals(System.Object obj), bool Equals(int obj), bool IEquatable[int].Equals(int other)
...

答案3

一些东西:

PowerShell 的数组功能非常棒,无需使用显式的 ArrayList。

$myArray = @()
$myArray += "Sam"
$myArray += "Tom"

或者你可以

$myArray = @("Sam", "Tom", "John")

要删除一个物品,我们也可以做一些有趣的事情。

$myArray = $myArray | ? {$_ -ne "Sam"}

但是,如果您真正想要的是获取方法和属性的列表,则可以使用反射(.NET 类)来提取该信息,如下所示:

 [reflection.assembly]::GetAssembly("System.Collections.ArrayList") | Get-Member

或者仅有的方法和类型的名称

[reflection.assembly]::GetAssembly("System.Collections.ArrayList") | Get-Member | Select Name, MemberType

这将让你:

Name                 MemberType
----                 ----------
ModuleResolve             Event
CreateInstance           Method
Equals                   Method
GetCustomAttributes      Method
GetCustomAttributesData  Method
GetExportedTypes         Method
GetFile                  Method
GetFiles                 Method
GetHashCode              Method
GetInterface             Method
GetLoadedModules         Method
GetManifestResourceInfo  Method
GetManifestResourceNames Method
GetManifestResourceStreamMethod
GetModule                Method
GetModules               Method
GetName                  Method
GetObjectData            Method
GetReferencedAssemblies  Method
GetSatelliteAssembly     Method
GetType                  Method
GetTypes                 Method
IsDefined                Method
LoadModule               Method
ToString                 Method
CodeBase               Property
EntryPoint             Property
EscapedCodeBase        Property
Evidence               Property
FullName               Property
GlobalAssemblyCache    Property
HostContext            Property
ImageRuntimeVersion    Property
IsDynamic              Property
IsFullyTrusted         Property
Location               Property
ManifestModule         Property
PermissionSet          Property
ReflectionOnly         Property
SecurityRuleSet        Property

或者,正如 @PatrickS. 提到的,有一个 PowerShell 命令可以跳过调用 Reflection 类:

"System.Collections.ArrayList" | Get-Member

相关内容