[Mono-bugs] [Bug 38957][Maj] Changed - Reflection does not support case-insensitve binding

bugzilla-daemon@rocky.ximian.com bugzilla-daemon@rocky.ximian.com
Sat, 8 Mar 2003 14:31:44 -0500 (EST)


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by ximian-bugzilla@thebap.org.

http://bugzilla.ximian.com/show_bug.cgi?id=38957

--- shadow/38957	Thu Mar  6 23:36:09 2003
+++ shadow/38957.tmp.19272	Sat Mar  8 14:31:44 2003
@@ -89,6 +89,36 @@
 Is more information needed to be able to pinpoint this issue ?
 
 ------- Additional Comments From gonzalo@ximian.com  2003-03-06 23:36 -------
 No, it's just that we need 36 hours long days ;-)
 We'll soon get to fix this.
 Btw, I encourage you to try fixing it in the meanwhile :-)
+
+------- Additional Comments From ximian-bugzilla@thebap.org  2003-03-08 14:31 -------
+This issue requires an update to MonoType.cs and icall.c
+
+In MonoType.cs GetMethodImpl() and GetPropertyImpl() need to be 
+updated.
+
+Add
+
+  bool ignoreCase = (bindingAttr & BindingFlags.IgnoreCase) != 0;
+
+then update
+
+  if (m.Name != name)
+
+to
+
+  if (String.Compare (m.Name, name, ignoreCase) != 0)
+
+
+Please note that the implementation of InvokeMember is correct and 
+does respect the IgnoreCase flag for methods and properties, however 
+it does not work correctly for fields or events because it uses the 
+internal call methods GetEvent() and GetField() which do not.
+
+To fix the Events and Fields the icall.c file needs updating. The 
+ves_icall_MonoType_GetEvent() and ves_icall_Type_GetField() methods 
+do not respect the binding flags when they compare the name of the 
+field or event.
+