public void call(IntPtr l, object tar)
        {
#if UNITY_EDITOR
            if (_pi != null)
            {
                BaseMethodMeta.TrigOnReflectInvokeMember(_pi.ReflectedType, _pi.Name);
            }
#endif
            if (_Setter == null)
            {
                l.LogError("This property does not have a setter.");
                return;
            }
            tar = l.GetLuaObject(1);
            var val = l.GetLua(2);
            try
            {
                val = val.ConvertTypeRaw(_pi.PropertyType);
                var args = ObjectPool.GetReturnValueFromPool(1);
                args[0] = val;
                _Setter.Invoke(tar, args);
            }
            catch (Exception e)
            {
                l.LogError(e);
            }
            l.UpdateData(1, tar);
        }
        public void call(IntPtr l, object tar)
        {
#if UNITY_EDITOR
            if (_pi != null)
            {
                BaseMethodMeta.TrigOnReflectInvokeMember(_pi.ReflectedType, _pi.Name);
            }
#endif
            if (_Getter == null)
            {
                l.LogError("This property does not have a getter.");
                return;
            }
            tar = l.GetLuaObject(1);
            object rv = null;
            try
            {
                rv = _Getter.Invoke(tar, ObjectPool.GetReturnValueFromPool(0));
            }
            catch (Exception e)
            {
                l.LogError(e);
            }
            l.PushLua(rv);
        }
        public void call(IntPtr l, object tar)
        {
            var types = BaseMethodMeta.GetArgTypes(l);

            if (!_RawIndexGetter.CanCall(types))
            {
                return;
            }
            _RawIndexGetter.call(l, tar);
        }
        public void call(IntPtr l, object tar)
        {
            var types = BaseMethodMeta.GetArgTypes(l);

            if (!_RawIndexSetter.CanCall(types))
            {
                l.pushboolean(true); // bool failed;
                return;
            }
            _RawIndexSetter.call(l, tar);
        }
        public void call(IntPtr l, object tar)
        {
#if UNITY_EDITOR
            if (_fi != null)
            {
                BaseMethodMeta.TrigOnReflectInvokeMember(_fi.ReflectedType, _fi.Name);
            }
#endif
            object val = l.GetLua(1);
            try
            {
                val = val.ConvertTypeRaw(_fi.FieldType);
                _fi.SetValue(null, val);
            }
            catch (Exception e)
            {
                l.LogError(e);
            }
        }
        public void call(IntPtr l, object tar)
        {
#if UNITY_EDITOR
            if (_fi != null)
            {
                BaseMethodMeta.TrigOnReflectInvokeMember(_fi.ReflectedType, _fi.Name);
            }
#endif
            object rv = null;
            try
            {
                rv = _fi.GetValue(null);
            }
            catch (Exception e)
            {
                l.LogError(e);
            }
            l.PushLua(rv);
        }
 public IndexSetter(BaseMethodMeta raw)
 {
     _RawIndexSetter = raw;
 }