diff --git a/Documentation/release-notes/4583.md b/Documentation/release-notes/4583.md new file mode 100644 index 00000000000..6c360f18d1a --- /dev/null +++ b/Documentation/release-notes/4583.md @@ -0,0 +1,17 @@ +### Tidier IntelliSense suggestions for Java.Lang.Object subclasses + +`Java.Lang.Object` contains several properties and methods that are +required to be `public` to support bindings, but are not intended +to be called by users. Use `[EditorBrowser]` to hide them from +IntelliSense, making it easier to find useful members. + +[IntelliSense cleanup)[images/4583.png] + +### Issues fixed + +#### IDE compatibility + + * [GitHub 4582](https://github.com/xamarin/xamarin-android/issues/4582): + Some `Java.Lang.Object` properties and methods like `Handle` and + `PeerReference` appeared in IntelliSense suggestions even though they were + primarily intended for use only in generated code. \ No newline at end of file diff --git a/Documentation/release-notes/images/4583.png b/Documentation/release-notes/images/4583.png new file mode 100644 index 00000000000..5296a74c6ed Binary files /dev/null and b/Documentation/release-notes/images/4583.png differ diff --git a/src/Mono.Android/Java.Lang/Object.cs b/src/Mono.Android/Java.Lang/Object.cs index d38e01d871c..e50289e7db3 100644 --- a/src/Mono.Android/Java.Lang/Object.cs +++ b/src/Mono.Android/Java.Lang/Object.cs @@ -6,6 +6,8 @@ using Java.Interop; using Android.Runtime; +using System.ComponentModel; +using System.Diagnostics; namespace Java.Lang { @@ -91,21 +93,27 @@ internal void SetHandleOnDeserialized (StreamingContext context) } #if JAVA_INTEROP + [EditorBrowsable (EditorBrowsableState.Never)] public int JniIdentityHashCode { get {return (int) key_handle;} } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] public JniObjectReference PeerReference { get { return new JniObjectReference (handle, (JniObjectReferenceType) handle_type); } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] public virtual JniPeerMembers JniPeerMembers { get { return _members; } } #endif // JAVA_INTEROP + [EditorBrowsable (EditorBrowsableState.Never)] public IntPtr Handle { get { if (weak_handle != IntPtr.Zero) @@ -115,10 +123,14 @@ public IntPtr Handle { } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] protected virtual IntPtr ThresholdClass { get { return Class.Object; } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] protected virtual System.Type ThresholdType { get { return typeof (Java.Lang.Object); } } @@ -154,6 +166,7 @@ void IJavaPeerable.DisposeUnlessReferenced () } } + [EditorBrowsable (EditorBrowsableState.Never)] public void UnregisterFromRuntime () { JNIEnv.AndroidValueManager.RemovePeer (this, key_handle); @@ -231,6 +244,7 @@ internal static void Dispose (IJavaPeerable instance, ref IntPtr handle, IntPtr } } + [EditorBrowsable (EditorBrowsableState.Never)] protected void SetHandle (IntPtr value, JniHandleOwnership transfer) { JNIEnv.AndroidValueManager.AddPeer (this, value, transfer, out handle); @@ -287,6 +301,7 @@ internal static IJavaPeerable GetObject (IntPtr handle, JniHandleOwnership trans return Java.Interop.TypeManager.CreateInstance (handle, transfer, type); } + [EditorBrowsable (EditorBrowsableState.Never)] public T[] ToArray() { return JNIEnv.GetArray(Handle); diff --git a/src/Mono.Android/Java.Lang/Throwable.cs b/src/Mono.Android/Java.Lang/Throwable.cs index 7c5fb6616b7..76654f0b6a2 100644 --- a/src/Mono.Android/Java.Lang/Throwable.cs +++ b/src/Mono.Android/Java.Lang/Throwable.cs @@ -4,6 +4,8 @@ using Java.Interop; using Android.Runtime; +using System.ComponentModel; +using System.Diagnostics; namespace Java.Lang { @@ -171,27 +173,37 @@ public override string ToString () } #if JAVA_INTEROP + [EditorBrowsable (EditorBrowsableState.Never)] public int JniIdentityHashCode { get {return (int) key_handle;} } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] public JniObjectReference PeerReference { get { return new JniObjectReference (handle, (JniObjectReferenceType) handle_type); } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] public virtual JniPeerMembers JniPeerMembers { get { return _members; } } #endif // JAVA_INTEROP + [EditorBrowsable (EditorBrowsableState.Never)] public IntPtr Handle { get { return handle; } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] protected virtual IntPtr ThresholdClass { get { return class_ref; } } + [DebuggerBrowsable (DebuggerBrowsableState.Never)] + [EditorBrowsable (EditorBrowsableState.Never)] protected virtual System.Type ThresholdType { get { return typeof (Java.Lang.Throwable); } } @@ -226,6 +238,7 @@ public unsafe Java.Lang.Class Class { } } + [EditorBrowsable (EditorBrowsableState.Never)] protected void SetHandle (IntPtr value, JniHandleOwnership transfer) { JNIEnv.AndroidValueManager.AddPeer (this, value, transfer, out handle);