Example #1
0
        protected override void WriteGetterBody(CodeWriter writer)
        {
            writer.WriteLine($"const string __id = \"{field.JavaName}.{field.Symbol.JniName}\";");
            writer.WriteLine();

            var invokeType = SourceWriterExtensions.GetInvokeType(field.GetMethodPrefix);
            var indirect   = field.IsStatic ? "StaticFields" : "InstanceFields";
            var invoke     = "Get{0}Value";

            invoke = string.Format(invoke, invokeType);

            writer.WriteLine($"var __v = {field.Symbol.ReturnCast}_members.{indirect}.{invoke} (__id{(field.IsStatic ? "" : ", this")});");

            if (field.Symbol.IsArray)
            {
                writer.WriteLine($"return global::Android.Runtime.JavaArray<{opt.GetOutputName (field.Symbol.ElementType)}>.FromJniHandle (__v.Handle, JniHandleOwnership.TransferLocalRef);");
            }
            else if (field.Symbol.NativeType != field.Symbol.FullName)
            {
                writer.WriteLine($"return {field.Symbol.ReturnCast}{(field.Symbol.FromNative (opt, invokeType != "Object" ? "__v" : "__v.Handle", true) + opt.GetNullForgiveness (field))};");
            }
            else
            {
                writer.WriteLine("return __v;");
            }
        }