Beim Debuggen der Ironpython-App in Visual Studio habe ich bestätigt, dass die JObject-Instanz „extendObj“ nicht null ist. Warum löst die Methode „extendObj.Remove“ den Fehler aus? Im Fenster „Watch 1“ kann ich auf Eigenschaften in der Variable „extendObj“ zugreifen. Kennt jemand den Grund? Ich bin nicht sehr vertraut mit Ironpython.
Quellcode-Bild 2
Während des Debuggens ist in Zeile 39 ein Fehler aufgetreten und der Trace-Stack lautet:
Fehler aufgetreten: Microsoft.Scripting.ArgumentTypeException: NoneType ist nicht aufrufbar 在
Microsoft.Scripting.Interpreter.ThrowInstruction.Run(InterpretedFrame Frame) und
Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame Frame) und Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,TRet](T0 arg0, T1 arg1, T2 arg2, T3 arg3)在
System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2) und
$6.DataChanged$37(PythonFunction $function, Object e) werden hinzugefügt E:\Codes\DemoSln\PythonApplication\Empty.py:行号 39
Mein Unternehmen hat eine App mit .net entwickelt, die App integrierte Ironpython. Der Quellcode ist nur ein Plugin.
hier ist mein Ironpython-Quellcode:
Code: Select all
import clr
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Newtonsoft.Json')
from System import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.List import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.Metadata import *
from Kingdee.BOS.Core.SqlBuilder import *
from Kingdee.BOS.Core.DynamicForm import *
from Newtonsoft.Json.Linq import JObject
def DataChanged(e):
if e.Field.Key == "F_QXQV_StartGotTime":
try:
startGotTime = this.View.Model.GetValue("F_QXQV_StartGotTime", e.Row);
originalExtendProp = this.View.Model.GetValue("FExtendProperty", e.Row);
if startGotTime is not None:
origin = DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
diff = startGotTime.ToUniversalTime() - origin;
timstamp = Convert.ToInt64(diff.TotalMilliseconds).ToString();
if originalExtendProp is None or String.IsNullOrWhiteSpace(originalExtendProp):
this.View.Model.SetValue("FExtendProperty", String.Format("{{{0} \"startGotTime\": \"{1}\" {0}}}", Environment.NewLine, timstamp), e.Row);
else:
extendObj = JObject.Parse(originalExtendProp);
extendObj["startGotTime"] = timstamp;
this.View.Model.SetValue("FExtendProperty", String.Format("{0}", extendObj), e.Row);
else:
if originalExtendProp is not None:
extendObj = JObject.Parse(originalExtendProp);
extendObj.Remove("startGotTime");
if extendObj.HasValues:
this.View.Model.SetValue("FExtendProperty", String.Format("{0}", extendObj), e.Row);
else:
this.View.Model.SetValue("FExtendProperty", "", e.Row);
except Exception as e:
this.View.ShowMessage(String.Format("Error occured: {0}", e));
Mobile version