我在PowerShell中创建了以下枚举。但是,如果我在枚举名称中有一个点(例如,“Name.A”),则Add-Type将返回错误。我该怎么办呢?我不想从“Name.A”中删除点。
$TypeEnum = "
namespace Types {
public enum Id {
Name.A = 1,
NameB = 2,
NameC = 3
}
}"
Add-Type -TypeDefinition $TypeEnum -Language CSharpVersion3
([Types.Id]::'Name.A').value__
这是我得到的错误:
Add-Type:c:\ Users \ User1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs(4):} 预期c:\ Users \ User1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs(3):
public enum Id {c:\ Users \ User1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs(4) :>>> Name.A = 1, c:\ Users \ User1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs(5):
NameB = 2,At line:10 char:1 + Add-Type -TypeDefinition $ TypeEnum -Language CSharpVersion3 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ + CategoryInfo:InvalidData:(c:\ Users \ User1 ... 513:} expected:CompilerError)[Add-Type],Exception + FullyQualifiedErrorId:SOURCE_CODE_ERROR,Microsoft.PowerShell.Commands.AddTypeCommand
添加类型:c:\ Users \ User1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs(8):类型 或命名空间定义,或期望的文件结束 c:\ Users \ User1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs(7):}
c:\ Users \ User1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs(8):>>> } 在 line:10 char:1 + Add-Type -TypeDefinition $ TypeEnum -Language CSharpVersion3 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ + CategoryInfo:InvalidData:(c:\ Users \ User1 ... f-file expected:CompilerError)[Add-Type],Exception + FullyQualifiedErrorId:SOURCE_CODE_ERROR,Microsoft.PowerShell.Commands.AddTypeCommand
添加类型:无法添加类型。有编译错误。在线:10 焦炭:1 + Add-Type -TypeDefinition $ TypeEnum -Language CSharpVersion3 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ + CategoryInfo:InvalidData:(:) [Add-Type],InvalidOperationException + FullyQualifiedErrorId:COMPILER_ERRORS,Microsoft.PowerShell.Commands.AddTypeCommand Unable 找到类型[Types.Id]:确保包含此类型的程序集 类型已加载。在行:12 char:1 +([Types.Id] ::'Name.A')。value__ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidOperation:(Types.Id:TypeName)[],RuntimeException + FullyQualifiedErrorId:TypeNotFound
答案 0 :(得分:2)
这是.Net的限制,以及PowerShell和C#的扩展。枚举成员名称中不能包含标点符号。
因此简短的回答是,你不能做任何hacky(你不得不改名.A来命名[CharacterCode] A或添加描述,或者其他一些奇怪的东西)你真的不应该这样做)