【问题标题】:List .NET objects inside an object列出对象内的 .NET 对象
【发布时间】:2016-07-19 10:52:00
【问题描述】:

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

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

  • WebRequest
  • Sockets
  • WebClient

我已经知道我可以看到里面的方法

[System.Net.WebRequest] | gm -Static

或者没有-Static 用于一般方法。

【问题讨论】:

  • 我不清楚你在问什么。您想枚举命名空间中的类吗?在实际对象中嵌套对象?
  • 我猜他把命名空间误认为是类,但我不确定:)
  • 列出命名空间中的.NET对象?
  • 给定System.Net,我猜这是一个命名空间,我想得到WebRequestSockets

标签: c# powershell


【解决方案1】:

试试这个

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

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

【讨论】:

  • 如果你省略 -and $_.IsClass 你也会得到一些 enum 类型。类似[System.AppDomain]::CurrentDomain.GetAssemblies() | % { $_.GetTypes() } | ? { $_.IsPublic -and $_.Namespace -eq "System.Net" }
  • 是的,因此我写道,他可以根据自己的需要更改过滤。但是当他问“我想在 System.Net 中获取类......”时,我以一种过滤的方式编写了这个示例
  • 我注意到提问者列出的Sockets 不是类型,而是嵌套的命名空间。所以也许他想要| ? { $_.IsPublic -and $_.Namespace -ne $null -and $_.Namespace.StartsWith("System.Net") }
  • 没有更简单的方法吗?
  • @JeppeStigNielsen 看来你猜对了 :) 采纳了你的建议 - 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
相关资源
最近更新 更多