//#region ToX //public string ToString(DObject This) { return (OnGetString != null) ? OnGetString(This) : ToDValue().ToString(); }// base.ToString(); } //public double ToDouble(DObject This) { return (OnGetDouble != null) ? OnGetDouble(This) : ToDValue().ToDouble(); }// base.ToDouble(); } //public int ToInt(DObject This) { return (OnGetInt != null) ? OnGetInt(This) : ToDValue().ToInt32(); }// base.ToInt(); } //public bool ToBoolean(DObject This) { return (OnGetBoolean != null) ? OnGetBoolean(This) : ToDValue().ToBoolean(); }// base.ToBoolean(); } //public DObject ToDObject(DObject This) { return (OnGetDObject != null) ? OnGetDObject(This) : ToDValue().ToDObject(); }// base.ToDObject(); } //public DValue ToDValue(DObject This) //{ // if (OnGetDValue != null) // { // DValue temp = new DValue(); // OnGetDValue(This, ref temp); // return temp; // } // else // { // return base.ToDValue(); // } //} //#endregion #region Get public void Get(DObject This, ref DValue v) { if (OnGetDValue != null) { OnGetDValue(This, ref v); } else if (Getter != null) { var callFrame = new CallFrame(); callFrame.Function = Getter; callFrame.This = (This); Getter.Call(ref callFrame); v = callFrame.Return; } else { v = base.ToDValue(); } }
public override IMember Call(IPythonInstance instance, string memberName, IArgumentSet args) => Getter.Call(args, instance?.GetPythonType() ?? DeclaringType);