public virtual object Invoke(string name, object[] parameters) { object value = this.GetValue(name); if (value == null && this.IsNativeMethod(name)) { return(ObjectUtilities.GetNativeValue(this, name, parameters)); } if (value == null) { throw new InvalidOperationException(string.Format("Unknown member '{0}'", name)); } if (!(value is ICallable)) { if (parameters == null) { return(value); } throw new InvalidOperationException(string.Format("'{0}' is not a method", name)); } ICallable method = (ICallable)value; IBindingEnvironment objenv = new ObjectEnvironment(this, method.Environment); return(method.Invoke(objenv, parameters)); }
public Object( ObjectEnvironment environment, string id, string name, ObjectType type, string description = null, Object parent = null ) : base(environment, id, name, type, description, parent) { }
public Pwm( ObjectEnvironment environment, string id, string name, PwmController controller, string description = null, Object parent = null ) : base(environment, id, name, new ObjectType("PWM", "PWM", "Pulse width modulation"), description, parent) { controller.ValidateNonNull(nameof(controller)); Controller = controller; PinCount = new Property<int>(this, nameof(PinCount), "Pin count", Controller.PinCount); Items.Add(PinCount); DelegateCommand command; command = new DelegateCommand<int>(this, nameof(OpenPin), "Open pin", p => OpenPin(p), p => CanOpenPin(p), parameters: new CommandParameterInfo<int>("Number", "Number", "Pin number") ); Items.Add(command); Frequency = new PhysicalProperty<double>(this, nameof(Frequency), "Frequency", Controller.ActualFrequency, Units.Hertz); Items.Add(Frequency); MinFrequency = new PhysicalProperty<double>(this, nameof(MinFrequency), "Minimum frequency", Controller.MinFrequency, Units.Hertz); Items.Add(MinFrequency); MaxFrequency = new PhysicalProperty<double>(this, nameof(MaxFrequency), "Maximum frequency", Controller.MaxFrequency, Units.Hertz); Items.Add(MaxFrequency); command = new DelegateCommand<double>(this, nameof(SetFrequency), "Set frequency", p => SetFrequency(p), p => CanSetFrequency(p), parameters: new CommandPhysicalParameterInfo<double>(Frequency) ); Items.Add(command); }
public override object Invoke(string name, object[] parameters) { object value = this.GetValue(name); if (value == null || !(value is ICallable)) { value = this.objclass.GetMember(name); } if (value == null) { if (this.IsNativeMethod(name)) { return(ObjectUtilities.GetNativeValue(this, name, parameters)); } if (this.objclass.DefaultMember != null) { ICallable defmethod = (ICallable)this.objclass.DefaultMember; IBindingEnvironment oenv = new ObjectEnvironment(this, defmethod.Environment); object[] arguments = new object[] { name, parameters }; return(defmethod.Invoke(oenv, arguments)); } else { return(base.Invoke(name, parameters)); } } if (!(value is ICallable)) { if (parameters == null) { return(value); } throw new InvalidOperationException(string.Format("'{0}' is not a method", name)); } ICallable method = (ICallable)value; IBindingEnvironment objenv = new ObjectEnvironment(this, method.Environment); return(method.Invoke(objenv, parameters)); }
public override object Invoke(string name, object[] parameters) { object value = this.GetValue(name); if (value == null || !(value is ICallable)) value = this.objclass.GetMember(name); if (value == null) { if (this.IsNativeMethod(name)) return ObjectUtilities.GetNativeValue(this, name, parameters); if (this.objclass.DefaultMember != null) { ICallable defmethod = (ICallable)this.objclass.DefaultMember; IBindingEnvironment oenv = new ObjectEnvironment(this, defmethod.Environment); object[] arguments = new object[] { name, parameters }; return defmethod.Invoke(oenv, arguments); } else return base.Invoke(name, parameters); } if (!(value is ICallable)) { if (parameters == null) return value; throw new InvalidOperationException(string.Format("'{0}' is not a method", name)); } ICallable method = (ICallable)value; IBindingEnvironment objenv = new ObjectEnvironment(this, method.Environment); return method.Invoke(objenv, parameters); }
public virtual object Invoke(string name, object[] parameters) { object value = this.GetValue(name); if (value == null && this.IsNativeMethod(name)) return ObjectUtilities.GetNativeValue(this, name, parameters); if (value == null) throw new InvalidOperationException(string.Format("Unknown member '{0}'", name)); if (!(value is ICallable)) { if (parameters == null) return value; throw new InvalidOperationException(string.Format("'{0}' is not a method", name)); } ICallable method = (ICallable)value; IBindingEnvironment objenv = new ObjectEnvironment(this, method.Environment); return method.Invoke(objenv, parameters); }
public override void ChangeEnvironment(ObjectEnvironment pEnvironment) { }
public virtual object Invoke(ICallable method, object[] parameters) { IBindingEnvironment objenv = new ObjectEnvironment(this, method.Environment); return(method.Invoke(objenv, parameters)); }
/// <summary> /// 目前只处理正常陆地环境下的状态,以后有其它状态(比如:骑乘)再添加 /// </summary> /// <param name="pEnvironment"></param> public void ChangeEnvironment(ObjectEnvironment pEnvironment) { _stateController.ChangeEnvironment(pEnvironment); }
public virtual object Invoke(ICallable method, object[] parameters) { IBindingEnvironment objenv = new ObjectEnvironment(this, method.Environment); return method.Invoke(objenv, parameters); }
public void SetUp() { this.dynobj = new DynamicObject(); this.environment = new ObjectEnvironment(dynobj); }
public void SetUp() { this.dynobj = new DynamicObject(); this.environment = new ObjectEnvironment(this.dynobj); }
public abstract void ChangeEnvironment(ObjectEnvironment pEnvironment);