Exemplo n.º 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;
        }
Exemplo n.º 2
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);
            }
        }