gpt4 book ai didi

c# - 代表所有的 PowerShell 枚举值

转载 作者:太空宇宙 更新时间:2023-11-03 18:35:23 27 4
gpt4 key购买 nike

鉴于我当前的 enum:

Add-Type -TypeDefinition @"
[System.Flags]
public enum FlagsEnum {
None = 0,
SummaryInfo = 1,
ReportOptions = 2,
ParameterFields = 4
}
"@

有没有办法创建一个将所有位设置为 1 的条目?此语法会导致错误:

Add-Type -TypeDefinition @"
[System.Flags]
public enum FlagsEnum {
None = 0,
SummaryInfo = 1,
ReportOptions = 2,
ParameterFields = 4,
All = (SummaryInfo -bor ReportOptions -bor ParameterFields)
}
"@

** 编辑 **

更改声明:

Add-Type -TypeDefinition @"
[System.Flags]
public enum FlagsEnum {
None = 0,
SummaryInfo = 1,
ReportOptions = 2,
ParameterFields = 4,
All = (SummaryInfo | ReportOptions | ParameterFields)
}
"@

代码:

$flags = [FlagsEnum]::All

if ( $flags -band [FlagsEnum]::SummaryInfo ) { write-host "add SummaryInfo" }
if ( $flags -band [FlagsEnum]::ReportOptions ) { write-host "add ReportOptions" }
if ( $flags -band [FlagsEnum]::ParameterFields ) { write-host "add ParameterFields" }

结果:

Add-Type : Cannot add type. The type name 'FlagsEnum' already exists.
At C:\Documents and Settings\xxx\My Documents\WindowsPowerShell\Scripts\enums.ps1:3 char:9
+ Add-Type <<<< -TypeDefinition @"
+ CategoryInfo : InvalidOperation: (FlagsEnum:String) [Add-Type], Exception
+ FullyQualifiedErrorId : TYPE_ALREADY_EXISTS,Microsoft.PowerShell.Commands.AddTypeCommand

最佳答案

试试这个:

Add-Type -TypeDefinition @"
[System.Flags]
public enum FlagsEnum {
None = 0,
SummaryInfo = 1,
ReportOptions = 2,
ParameterFields = 4,
All = (SummaryInfo | ReportOptions | ParameterFields)
}
"@

请记住,在此处的文档中,您实际上并不是在编写 PowerShell,而是在编写 C#。

根据原始问题提问者的评论为后代编辑

显示的实际错误表明该类型已经存在。这是因为代码的早期版本已在同一 PowerShell session 中运行。 PowerShell 的一个不幸的限制是您不能添加类型、调整它然后重新添加它(这使得开发定义自己类型的脚本很痛苦)。

关于c# - 代表所有的 PowerShell 枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16342653/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com