Esempio n. 1
0
        private static Value ConvertToValue(JNIEnv env, object o)
        {
            // check if this is a primitive
            Type type = o.GetType();

            if (type.IsPrimitive)
            {
                return(ConvertPrimitiveToValue(env, o, type));
            }

            // if it's not an array, cast to IJavaObject
            Array array = o as Array;

            if (array == null)
            {
                return(ConvertToValue(o));
            }

            // it's an array, so create the proper array type and convert the individual elements recursively
            string         classSignature = GetSignature(type.GetElementType().FullName);
            JniLocalHandle clazzHandle    = env.FindClass(classSignature);
            JniLocalHandle arrayHandle    = env.NewObjectArray(array.Length, clazzHandle, JniLocalHandle.Zero);

            for (int i = 0; i < array.Length; i++)
            {
                JniHandle element = new JniHandle();
                element.handle = ConvertToValue(env, array.GetValue(i))._object;
                env.SetObjectArrayElement(arrayHandle, i, element);
            }
            Value ret = new Value();

            ret._object = arrayHandle;
            return(ret);
        }