Null bir Enum öğesini PowerShell'de $ null olarak ayarlamak bir System.Management.Automation.PSInvalidCastException
istisnasına neden olur. Bu beklenmedik (en azından bana). Bunun için makul bir açıklaması var mı?
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
istisna mesajı okur:
İstisna ayarı "NullableColor": İşte null Int32 başarılı ayarı, ancak bir null Enum ayarı nasıl gösteren bir örnek bir istisna almasına sebep olur "Can not . sebebiyle geçerli olmayan numaralandırma değerlerine "ColorEnum" yazmanız boş dönüştürmek aşağıdaki numaralandırma değerlerden birini belirtin ve tekrar deneyin. mümkün numaralandırma değerleri "Kırmızı, Mavi, Yeşil" dir." Ben kullanmak istiyorum Enum olması beklenen bir null veritabanı sütununu temsil ettiği için
Ben 0 varsayılan değerine sahip bir Enum yerine, bir null Enum kullanabilmek için istiyorum sebebi vardır geçerli bir değer ayarlanmadığında null. Veritabanı modelini değiştiremiyorum, bu yüzden ne yazık ki çözüm Enum yerine bir Int32 kullanmak olabilir.
Bunu başkası yapan oldu mu? Belki de bir böcek mi?
$ 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
Bana bir hata gibi görünüyor. Burada gönderebilirsiniz - https://connect.microsoft.com/PowerShell/Feedback –
Bana da bir hata gibi görünüyor. Onu bulmakta GJ. Http://stackoverflow.com/questions/4337193/how-to-set-enum-to-null –