2013-08-02 8 views
6

Przeczytaj uważnie, zanim odpowiesz! Chcę rzucić liczbę całkowitą do typu wyliczenia , gdzie wartość całkowita nie jest faktycznie zdefiniowana w enum. W VB.Net możliwe jest bezpośrednie rzutowanie dowolnej liczby całkowitej na typ enum oparty na liczbach całkowitych za pomocą DirectCast. Czy jest jakiś sposób, aby to osiągnąć natywnie w PowerShell?Jak zmusić liczbę całkowitą do typu wyliczenia w PowerShell?

muszę zrobić to w PowerShell w celu wywołania metody na obiekt biurowy Interop (Access.Application.SysCmd), który bierze wartość wyliczenia jako pierwszy argument (AcSysCmdAction), ale w przypadku gdy rzeczywista wartość trzeba przekazać (603 dla nieudokumentowany eksport do działania accde) nie jest objęty definicją wyliczania PIA. Wbudowana konwersja typu PowerShell powoduje, że konwertuje ona liczbę lub ciąg znaków w odpowiednim typie wyliczenia, ale nie będzie wymuszać wartości int, która nie znajduje się w wyliczeniu. Zamiast tego zgłasza nieważny wyjątek konwersji. W tej chwili używam dynamicznie skompilowanego ScriptControl, który wywołuje SysCmd przez VBScript, ale chciałbym zachować wszystko w PowerShell, jeśli to możliwe.

+1

42! O, czekaj, pozwól mi naprawdę ZAPOZNAĆ SIĘ ... – Jiminion

Odpowiedz

6

Można zadzwonić klasy za EnumToObject metoda:

$day = [Enum]::ToObject([DayOfWeek], 90) 
2

Cóż, właśnie znalazłem sposób. W PowerShell, wydaje się, że obiekty enum mają właściwość o nazwie "value__", która może być bezpośrednio ustawiona na dowolną wartość!

#Create a variable with the desired enum type 
$ops = [System.Text.RegularExpressions.RegexOptions]0 
#Directly set the value__ property 
$ops.value__ = 3450432 
Powiązane problemy