Arbeiten an einem Projekt, das einige IronPython-Skripts als Plug-Ins verwendet, die die in C# codierte Funktionalität verwenden. In einem meiner C# -Klassen, habe ich eine Eigenschaft, die vom Typ ist:C#/IronPython Interop und der Datentyp "float"
Dictionary<int, float>
ich den Wert dieser Eigenschaft aus dem Ironpython-Code festgelegt, wie folgt aus:
mc = MyClass()
mc.ValueDictionary = Dictionary[int, float]({1:0.0, 2:0.012, 3:0.024})
Wenn jedoch dieses Bit der Code ausgeführt wird, ist es die folgende Ausnahme wirft:
Microsoft.Scripting.ArgumentTypeException was unhandled by user code
Message=expected Dictionary[int, Single], got Dictionary[int, float]
Um die Dinge eigenartiger, die ursprünglich die C# -Code zu machen verwendet
Dictionary<int, double>
aber ich konnte einen "double" -Typ in IronPython nicht finden, versuchte "float" aus einer Laune und es hat gut funktioniert, keine Fehler geben. Aber jetzt, da es float an beiden Enden verwendet (was es von Anfang an hätte verwenden sollen), ist es fehlerhaft und denkt, dass der C# -Code den Datentyp "Single" verwendet ?!
Ich habe auch im Objektbrowser für die C# Bibliothek geprüft und sicher genug, es zeigt, wie eine „float“ Art und nicht mit „Single“
Danke, perfekte Antwort. Und ja, ich denke, ich habe schon etwas über die Mappings geschrieben, ich wusste einfach nicht warum. Es schien nur widersinnig, dass Float in C# in Python nicht float sein würde. –
Gern geschehen! Ich hatte in letzter Zeit ein ähnliches Problem (C#/Python Interop). Es ist in der Tat sehr entgegengesetzt intuitiv, da alle C-ähnlichen Sprachen, Java und viele andere 'float' für einfache Genauigkeitszahlen verwenden. –