相关疑难解决方法(0)

为什么在某些Powershell类型名称中需要加号运算符?

为什么在Powershell中System.DayOfWeek可以将枚举称为like [System.DayOfWeek],而System.Environment.SpecialFolder必须将枚举称为like [System.Environment+SpecialFolder](请注意加号)?

我的猜测是因为SpecialFolder是静态Environment类的一部分,而DayOfWeek直接位于System命名空间中,但是我很难找到有关此的任何信息。通常静态成员将使用“静态成员运算符”,但在这种情况下不起作用,除了神秘的加号外,我也尝试过其他任何操作...

[System.DayOfWeek] # returns enum type
[enum]::GetValues([System.DayOfWeek]) # returns enum values
[enum]::GetValues([System.Environment.SpecialFolder]) # exception: unable to find type
[enum]::GetValues([System.Environment]::SpecialFolder) # exception: value cannot be null
[enum]::GetValues([System.Environment+SpecialFolder]) # returns enum values
Run Code Online (Sandbox Code Playgroud)

System.Environment.SpecialFolder绝对是一种类型,在C#中,两个枚举的工作方式相同:

Enum.GetValues(typeof(System.Environment.SpecialFolder)) // works fine
Enum.GetValues(typeof(System.DayOfWeek)) // also works
Run Code Online (Sandbox Code Playgroud)

我真的很想了解Powershell为什么会有区别,以及这种行为背后的原因。有谁知道为什么会这样吗?

powershell enums

7
推荐指数
1
解决办法
116
查看次数

什么是List`1对象?

System.IO.FileInfo具有Target成员.

使用Get-Item -Path * -Include 't.txt' | Get-Member显示它有一个Target成员CodeProperty.

使用GetType()显示它是一个List`1

C:>Get-Item -Path * -Include 't.txt' | ForEach-Object { $_.Target.GetType() }

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     List`1                                   System.Object

C:>Get-Item -Path * -Include 't.txt' | % { $_.Target.GetType() | % { $_.FullName } }
System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Run Code Online (Sandbox Code Playgroud)

generics powershell types

2
推荐指数
1
解决办法
118
查看次数

标签 统计

powershell ×2

enums ×1

generics ×1

types ×1