Я создал перечисления ниже в 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__
Вот ошибка, которую я получаю:
Тип добавления: 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 + ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ Информация о категории: InvalidData: (c:\Users\User1...513: } ожидаемый: CompilerError) [Add-Type], Exception + FullyQualifiedErrorId: SOURCE_CODE_ERROR, Microsoft.PowerShell.Commands.AddTypeCommand
Add-Type: 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) : >>> } В строке:10 char:1 + Add-Type -TypeDefinition $TypeEnum -Language CShar pVersion3 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ + CategoryInfo: InvalidData: (c:\Users\User1...f-файл ожидается:CompilerError) [Add-Type], Exception + FullyQualifiedErrorId: SOURCE_CODE_ERROR,Microsoft.PowerShell.Commands .AddTypeCommand
Add-Type: невозможно добавить тип. Были ошибки компиляции. В строке: 10 символов: 1 + Add-Type -TypeDefinition $TypeEnum -Language CSharpVersion3 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidData: (:) [Add-Type], InvalidOperationException + FullyQualifiedErrorId: COMPILER_ERRORS, Microsoft. PowerShell.Commands.AddTypeCommand Невозможно найти тип [Types.Id]: убедитесь, что сборка, содержащая этот тип, загружена. В строке:12 char:1 + ([Types.Id]::'Name.A').value__ + ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~ + CategoryInfo: InvalidOperation: (Types.Id:TypeName) [], RuntimeException + FullyQualifiedErrorId: TypeNotFound
Name.A
наNameA
. Точки не допускаются в идентификаторах в C#. Почему ты не хочешь убрать точку? - person Chris Dunaway   schedule 05.10.2016