Praca nad projektem, który wykorzystuje niektóre skrypty IronPython jako wtyczki, które wykorzystują funkcjonalność zakodowaną w języku C#. W jednym z moich # klas C, mam właściwość, która jest typu:C#/IronPython Interop i typ danych "float"
Dictionary<int, float>
ustawić wartość tej nieruchomości z kodem IronPython coś takiego:
mc = MyClass()
mc.ValueDictionary = Dictionary[int, float]({1:0.0, 2:0.012, 3:0.024})
Jednak, gdy ten bit od kod jest uruchamiany, to rzuca następujący wyjątek:
Microsoft.Scripting.ArgumentTypeException was unhandled by user code
Message=expected Dictionary[int, Single], got Dictionary[int, float]
Żeby było dziwniej, pierwotnie kod C# użyte
Dictionary<int, double>
ale nie mogłem znaleźć "podwójnego" typu w IronPython, wypróbowałem "float" na kaprysie i działało dobrze, nie dając żadnych błędów. Ale teraz, gdy używa on float na obu końcach (który powinien był używać od początku) to błędy i myśli, że kod C# używa "pojedynczego" typu danych ?!
Mam jeszcze sprawdzone w przeglądarce obiektu dla C# biblioteki, a na pewno wystarczy, to pokazuje, jak za pomocą „float” typu, a nie „Single”
Dziękuję, doskonała odpowiedź. I tak, wydaje mi się, że już trochę ułożyłem to, co było odwzorowaniem, po prostu nie wiedziałem dlaczego. Po prostu wydawało się sprzeczne intuicyjnie, że float w C# nie byłby unormowany w Pythonie. –
Nie ma za co! Ostatnio miałem podobny problem (C#/Python Interop). Jest to rzeczywiście bardzo sprzeczne z intuicją, ponieważ wszystkie języki podobne do C, Java i wiele innych używają 'float' dla liczb pojedynczych precyzji. –