Beispiel #1
0
        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;
        }
Beispiel #2
0
    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;
    }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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;
        }
Beispiel #5
0
        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);
            }
        }