L'impostazione di Enum Nullable su $ null in PowerShell causa un'eccezione System.Management.Automation.PSInvalidCastException
. Questo è inaspettato (almeno per me). C'è una spiegazione ragionevole per questo? Ecco un esempio che mostra come la fissazione di un Nullable Int32 è successo, ma l'impostazione di un Nullable Enum causa un'eccezione:
Add-Type @"
public enum ColorEnum
{
Red = 1,
Blue = 2,
Green = 3,
}
public class Thing
{
public ColorEnum? NullableColor = ColorEnum.Blue;
public System.Int32? NullableInt = 123;
}
"@
$test = New-Object Thing
# Setting the Nullable Int32 to $null works, as expected.
$test.NullableInt = $null
# Setting the Nullable Enum to $null causes exception.
$test.NullableColor = $null
Il messaggio di eccezione si legge: impostazione
eccezione "NullableColor": "Can not convertire null in tipo "ColorEnum" a causa di valori di enumerazione non validi Specificare uno dei seguenti valori di enumerazione e riprovare. I possibili valori di enumerazione sono "Rosso, Blu, Verde". "
Il motivo che mi piacerebbe essere in grado di utilizzare un Nullable Enum, piuttosto che un Enum con un valore predefinito di 0, è perché l'Enum voglio usare rappresenta una colonna del database nullable che dovrebbe essere null quando non è impostato alcun valore valido. Non riesco a cambiare il modello del database, quindi purtroppo sembra che la soluzione potrebbe essere utilizzare un Int32 anziché un Enum.
Qualcun altro ha provato questo? Forse è un bug?
$ PsVersionTable:
Name Value
---- -----
PSVersion 3.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.18444
BuildVersion 6.2.9200.16481
PSCompatibleVersions {1.0, 2.0, 3.0}
PSRemotingProtocolVersion 2.2
Sembra un bug per me. Puoi inviarlo qui - https://connect.microsoft.com/PowerShell/Feedback –
Sembra anche un bug per me. GJ nel trovarlo. Ecco un collegamento con ulteriori enumerazioni nullable: http://stackoverflow.com/questions/4337193/how-to-set-enum-to-null –