private void SetMember(IScriptContext context, object obj, object value) { // Check whether we are setting member value for a dynamic object var dynamicObject = obj as DynamicObject; if (dynamicObject != null) { // Get or create a new call site for a setter var setter = CallSiteCache.GetOrCreatePropertySetter(_identifier); if (setter == null) { throw new ScriptIdNotFoundException(_identifier); } // set property value for the dynamic object setter.Target(setter, obj, value); } else { IMemberBinding bind = RuntimeHost.Binder.BindToMember(obj, _identifier, true); if (bind == null) { throw new ScriptIdNotFoundException(_identifier); } bind.SetValue(value); } context.Result = value; }
public MemberRename(object instance, string original, string newName) { Instance = instance; _oldMember = RuntimeHost.Binder.BindToMember(instance, original, true); if (_oldMember == null) throw new ScriptIdNotFoundException(original); _newName = newName; _original = original; }
public override IMemberBinding GetMember(string name, params object[] arguments) { IMemberBinding bind = RuntimeHost.Binder.BindToMember(_instance, name, true); if (bind != null) { return(bind); } return(base.GetMember(name, arguments)); }
public MemberRename(object instance, string original, string newName) { Instance = instance; _oldMember = RuntimeHost.Binder.BindToMember(instance, original, true); if (_oldMember == null) { throw new ScriptIdNotFoundException(original); } _newName = newName; _original = original; }
public void AssignTo(object target) { var scope = target as IScriptScope; if (scope != null) { foreach (string field in Fields) { scope.SetItem(field, _fields[field]); } return; } foreach (string field in Fields) { IMemberBinding bind = RuntimeHost.Binder.BindToMember(target, field, false); if (bind != null) { bind.SetValue(_fields[field]); } //RuntimeHost.Binder.Set(field, target, fields[field], false); } }