Beispiel #1
0
        public CQ_Value ComputeValue(CQ_Content content)
        {
#if CQUARK_DEBUG
            content.InStack(this);
#endif
            var parent = _expressions[0].ComputeValue(content);
            if (parent == null)
            {
                throw new Exception("调用空对象的方法:" + _expressions[0].ToString() + ":" + ToString());
            }
            var key   = _expressions[1].ComputeValue(content);
            var value = _expressions[2].ComputeValue(content);
            //object setv=value.value;
            //if(value.type!=parent.type)
            //{
            //    var vtype = CQuark.AppDomain.GetType(value.type);
            //    setv = vtype.ConvertTo(CQuark.AppDomain, setv, parent.type);
            //}

            //这几行是为了快速获取Unity的静态变量,而不需要反射
            if (!Wrap.IndexSet(parent.type.type, parent.value, key, value))
            {
                var type = CQuark.AppDomain.GetType(parent.type);
                type._class.IndexSet(content, parent.value, key.value, value.value);
            }

#if CQUARK_DEBUG
            content.OutStack(this);
#endif
            return(null);
        }
        public CQ_Value ComputeValue(CQ_Content content)
        {
#if CQUARK_DEBUG
            content.InStack(this);
#endif
            CQ_Value parent = _expressions[0].ComputeValue(content);
            object   obj    = parent.GetObject();
            if (parent == CQ_Value.Null)
            {
                throw new Exception("调用空对象的方法:" + _expressions[0].ToString() + ":" + ToString());
            }
            CQ_Value key   = _expressions[1].ComputeValue(content);
            CQ_Value value = _expressions[2].ComputeValue(content);
            //object setv=value.value;
            //if(value.type!=parent.type)
            //{
            //    var vtype = CQuark.AppDomain.GetType(value.type);
            //    setv = vtype.ConvertTo(CQuark.AppDomain, setv, parent.type);
            //}

            //这几行是为了快速获取Unity的静态变量,而不需要反射
            if (!Wrap.IndexSet(parent.m_type, obj, key, value))
            {
                var type = CQuark.AppDomain.GetITypeByCQValue(parent);
                type._class.IndexSet(content, parent.GetObject(), obj, value.GetObject());
            }

            CQ_Expression_GetValue f = _expressions[0] as CQ_Expression_GetValue;
            content.Set(f.value_name, parent);


#if CQUARK_DEBUG
            content.OutStack(this);
#endif
            return(CQ_Value.Null);
        }