C# 列出对象中的.NET对象

C# 列出对象中的.NET对象,c#,powershell,C#,Powershell,我不知道如何访问对象内部的对象。我读到的所有内容都是关于Get Member选项的,但这是为了列出方法/属性,而不是类中的类,这似乎是理所当然的,或者你应该知道它或其他什么 我想获得System.Net中的类,或者我想列出的任何类: WebRequest Sockets WebClient 我已经知道我可以用 [System.Net.WebRequest] | gm -Static 或者不使用-Static作为常规方法。尝试一下 [System.AppDomain]::CurrentDo

我不知道如何访问对象内部的对象。我读到的所有内容都是关于
Get Member
选项的,但这是为了列出方法/属性,而不是类中的类,这似乎是理所当然的,或者你应该知道它或其他什么

我想获得
System.Net
中的类,或者我想列出的任何类:

  • WebRequest
  • Sockets
  • WebClient
我已经知道我可以用

[System.Net.WebRequest] | gm -Static
或者不使用
-Static
作为常规方法。

尝试一下

[System.AppDomain]::CurrentDomain.GetAssemblies() | 
    % { $_.GetTypes() } |
    ? { $_.IsPublic -and $_.Namespace -ne $null -and $_.Namespace.StartsWith("System.Net")    

当然,您可以根据需要更改筛选,并在必要时添加排序

我不清楚您在问什么。是否要枚举命名空间中的类?在实际对象中嵌套对象?我猜他把名称空间误认为类,但我不确定:)在名称空间中列出.NET对象?给定
System.NET
,我猜它是一个名称空间,我想得到
WebRequest
Sockets
etcIf你省略
,而$.IsClass
你也会得到一些
enum
类型。类似于
[System.AppDomain]::CurrentDomain.getAssemblys()|%{$|.GetTypes()}|?{$\.IsPublic-和$\.Namespace-eq“System.Net”}
是的,因此我写了他可以根据自己的需要更改过滤。但是,当他问“我想在System.Net中获取类…”时,我以一种过滤的方式编写了这个示例。我注意到,询问者列出的
Sockets
,不是一种类型,而是一个嵌套的名称空间。那么也许他想要
|?{$\.IsPublic-和$\.Namespace-ne$null-和$\.Namespace.StartsWith(“System.Net”)}
。难道没有更简单的方法吗?@JeppeStigNielsen似乎你猜对了:)采纳了你的建议-thx!