Ejemplo n.º 1
0
        internal Array TableToArray(object luaParamValue, Type paramArrayType)
        {
            Array array;

            if (luaParamValue is LuaTable)
            {
                LuaTable luaTable = (LuaTable)luaParamValue;
                IDictionaryEnumerator enumerator = luaTable.GetEnumerator();
                enumerator.Reset();
                array = Array.CreateInstance(paramArrayType, luaTable.Values.get_Count());
                int num = 0;
                while (enumerator.MoveNext())
                {
                    object obj = enumerator.get_Value();
                    if (paramArrayType == typeof(object) && obj != null && obj.GetType() == typeof(double) && MetaFunctions.IsInteger((double)obj))
                    {
                        obj = Convert.ToInt32((double)obj);
                    }
                    array.SetValue(Convert.ChangeType(obj, paramArrayType), num);
                    num++;
                }
            }
            else
            {
                array = Array.CreateInstance(paramArrayType, 1);
                array.SetValue(luaParamValue, 0);
            }
            return(array);
        }