Jelajahi Sumber

Fix IsOverridden method per @tig in https://github.com/gui-cs/Terminal.Gui/issues/2156#issuecomment-1299338732

BDisp 2 tahun lalu
induk
melakukan
060cb77e95
1 mengubah file dengan 11 tambahan dan 6 penghapusan
  1. 11 6
      Terminal.Gui/Core/View.cs

+ 11 - 6
Terminal.Gui/Core/View.cs

@@ -3080,12 +3080,17 @@ namespace Terminal.Gui {
 		/// <param name="view">The view.</param>
 		/// <param name="view">The view.</param>
 		/// <param name="method">The method name.</param>
 		/// <param name="method">The method name.</param>
 		/// <returns><see langword="true"/> if it's overridden, <see langword="false"/> otherwise.</returns>
 		/// <returns><see langword="true"/> if it's overridden, <see langword="false"/> otherwise.</returns>
-		public bool IsOverridden (View view, string method)
-		{
-			Type t = view.GetType ();
-			MethodInfo m = t.GetMethod (method);
-
-			return (m.DeclaringType == t || m.ReflectedType == t) && m.GetBaseDefinition ().DeclaringType == typeof (Responder);
+		public static bool IsOverridden (View view, string method)
+		{
+			MethodInfo m = view.GetType ().GetMethod (method,
+				BindingFlags.Instance
+				| BindingFlags.Public
+				| BindingFlags.NonPublic
+				| BindingFlags.DeclaredOnly);
+			if (m == null) {
+				return false;
+			}
+			return m.GetBaseDefinition ().DeclaringType != m.DeclaringType;
 		}
 		}
 	}
 	}
 }
 }