public sealed override bool directSet(RunTimeValueBase value)
        {
            if (linktarget != null)
            {
                return(linktarget.directSet(value));
            }
            else
            {
                index = (int)value.rtType;

                //if (index > RunTimeDataType.unknown) //若大于unknown,则说明是一个对象
                //{
                //    index = RunTimeDataType._OBJECT;
                //}
                //值类型必须拷贝!!否则值可能被其他引用而导致错误
                //私有构造函数的数据可以直接传引用,否则必须拷贝赋值。
                switch (value.rtType)
                {
                case RunTimeDataType.rt_boolean:
                    store[0] = value;
                    break;

                case RunTimeDataType.rt_int:
                    //setValue(((rtInt)value).value);
                    _intValue.value = ((rtInt)value).value;
                    break;

                case RunTimeDataType.rt_uint:
                    //setValue(((rtUInt)value).value);
                    _uintValue.value = ((rtUInt)value).value;
                    break;

                case RunTimeDataType.rt_number:

                    _numberValue.value = ((rtNumber)value).value;

                    break;

                case RunTimeDataType.rt_string:
                    setValue(((rtString)value).value);
                    break;

                case RunTimeDataType.rt_void:
                    store[index] = value;
                    break;

                case RunTimeDataType.rt_null:
                    store[6] = value;
                    break;

                case RunTimeDataType.rt_function:
                {                                //Function需要保存上下文环境。因此需要像值类型那样进行拷贝
                    _functionValue.CopyFrom((rtFunction)value);
                    //store[index] = _functionValue;
                    store[COMMREFTYPEOBJ] = _functionValue;
                    needclear             = true; refPropChanged = true;
                }
                break;

                case RunTimeDataType.fun_void:
                    store[8] = value;
                    break;

                case RunTimeDataType.rt_array:
                {
                    //store[index] = value;
                    store[COMMREFTYPEOBJ] = value; refPropChanged = true;
                }
                break;

                case RunTimeDataType.unknown:
                    store[10] = null;
                    break;

                default:
                {
                    index = RunTimeDataType._OBJECT;
                    rtObjectBase obj = (rtObjectBase)value; refPropChanged = true;
                    if (obj.value._class.isLink_System)
                    {
                        if (obj is StackLinkObjectCache.StackCacheObject)
                        {
                            needclear = true;
                            //链接到系统的对象。这里需要用到缓存的rtObject,以避免当调用链接对象的方法并返回的也是链接对象时,
                            //要重新创建rtObject,而是直接更新缓存的rtObject.
                            var cacheobj = _linkObjCache.getCacheObj(obj.value._class);
                            ASBinCode.rtti.LinkSystemObject link = (ASBinCode.rtti.LinkSystemObject)cacheobj.value;

                            if (obj.value._class.isStruct)
                            {
                                link.CopyStructData((ASBinCode.rtti.LinkSystemObject)obj.value);
                            }
                            else
                            {
                                link._class = obj.value._class;
                                link.SetLinkData(((ASBinCode.rtti.LinkSystemObject)obj.value).GetLinkData());
                                cacheobj.rtType           = obj.rtType;
                                cacheobj.objScope.blockId = obj.value._class.blockid;
                            }



                            //rtObject srcObj = ((rtObject)value);
                            //StackLinkObjectCache.StackCacheObject ss = srcObj as StackLinkObjectCache.StackCacheObject;
                            //if (ss != null)
                            //{
                            //	srcObj = ss.getSrcObject();
                            //}

                            //if (!(srcObj is StackLinkObjectCache.StackCacheObject))
                            //{
                            //	//当对象方法调用已绑定了这个槽中的链接对象,然后下面又复用了这个槽时
                            //	//为了避免下面寄存器复用破坏缓存中的LinkSystemObject对象,缓存一份
                            //	_linkObjCache.srcObject = srcObj;
                            //}


                            //store[RunTimeDataType._OBJECT] = cacheobj;
                            store[COMMREFTYPEOBJ] = cacheobj;
                        }
                        else
                        {
                            store[COMMREFTYPEOBJ] = value;
                        }
                    }
                    else
                    {
                        //store[RunTimeDataType._OBJECT] = value;
                        store[COMMREFTYPEOBJ] = value;
                    }
                }
                break;
                }
                return(true);
            }
        }
            public override SLOT assign(RunTimeValueBase value,out bool success)
            {
                if (vector_data.vector_type != value.rtType
                    &&
                    !
                    (
                        //***检查子类关系****
                        (vector_data.vector_type > RunTimeDataType.unknown &&
                         value.rtType > RunTimeDataType.unknown &&
                         (
                             ClassMemberFinder.check_isinherits(value,vector_data.vector_type,classfinder)
                             ||
                             ClassMemberFinder.check_isImplements(value,vector_data.vector_type,classfinder)
                         )
                        )
                        ||
                        (
                            vector_data.vector_type > RunTimeDataType.unknown &&
                            value.rtType == RunTimeDataType.rt_null
                        )
                        ||
                        (
                            vector_data.vector_type == RunTimeDataType.rt_array &&
                            value.rtType == RunTimeDataType.rt_null
                        )
                        ||
                        (
                            vector_data.vector_type == RunTimeDataType.rt_function &&
                            value.rtType == RunTimeDataType.rt_null
                        )
                        ||
                        (
                            vector_data.vector_type == RunTimeDataType.rt_string &&
                            value.rtType == RunTimeDataType.rt_null
                        )
                    )
                    )
                {
                    //return false;
                    success = false;
                    return(this);
                }
                else
                {
                    switch (value.rtType)
                    {
                    case RunTimeDataType.rt_int:
                    {
                        ((rtInt)vector_data.innnerList[idx]).value = ((rtInt)value).value;
                        success = true;
                        return(this);
                    }

                    case RunTimeDataType.rt_uint:
                    {
                        ((rtUInt)vector_data.innnerList[idx]).value = ((rtUInt)value).value;
                        success = true;
                        return(this);
                    }

                    case RunTimeDataType.rt_number:
                    {
                        ((rtNumber)vector_data.innnerList[idx]).value = ((rtNumber)value).value;
                        success = true;
                        return(this);
                    }

                    case RunTimeDataType.rt_string:
                    {
                        ((rtString)vector_data.innnerList[idx]).value = ((rtString)value).value;
                        success = true;
                        return(this);
                    }

                    case RunTimeDataType.rt_function:
                    {
                        ((rtFunction)vector_data.innnerList[idx]).CopyFrom((rtFunction)value);
                        success = true;
                        return(this);
                    }

                    default:
                        break;
                    }

                    if (value.rtType > RunTimeDataType.unknown)
                    {
                        var vd = vector_data.innnerList[idx];
                        if (vd != null)
                        {
                            var cls = classfinder.getClassByRunTimeDataType(value.rtType);
                            if (cls.isLink_System)
                            {
                                ASBinCode.rtti.LinkSystemObject link = (ASBinCode.rtti.LinkSystemObject)((rtObjectBase)vd).value;

                                if (cls.isStruct)
                                {
                                    link.CopyStructData((ASBinCode.rtti.LinkSystemObject)((rtObjectBase)value).value);
                                }
                                else
                                {
                                    ((rtObjectBase)vd).value = ((rtObjectBase)value).value;
                                }
                                success = true;
                                return(this);
                            }
                        }
                    }

                    vector_data.innnerList[idx] = (RunTimeValueBase)value.Clone();                     //对容器的直接赋值,需要Clone																				   //return true;
                    success = true;
                    return(this);
                }
            }