Merge pull request #1659 from alexanderkyte/stringbuilder-referencesource
[mono.git] / mcs / class / corlib / System.Reflection / Module.cs
index 6cea63594ed84f08d1b842d179df9b1bf5047945..75bfc1fc74b81ec166fe66f459e7af567465e296 100644 (file)
@@ -48,10 +48,10 @@ namespace System.Reflection {
        [Serializable]
        [ClassInterfaceAttribute (ClassInterfaceType.None)]
        [StructLayout (LayoutKind.Sequential)]
-#if NET_4_0
-       public abstract class Module : ISerializable, ICustomAttributeProvider, _Module {
+#if MOBILE
+       public abstract class Module : ISerializable, ICustomAttributeProvider {
 #else
-       public partial class Module : ISerializable, ICustomAttributeProvider, _Module {
+       public abstract class Module : ISerializable, ICustomAttributeProvider, _Module {
 #endif
                public static readonly TypeFilter FilterTypeName = new TypeFilter (filter_by_type_name);
                public static readonly TypeFilter FilterTypeNameIgnoreCase = new TypeFilter (filter_by_type_name_ignore_case);
@@ -69,11 +69,7 @@ namespace System.Reflection {
                const BindingFlags defaultBindingFlags = 
                        BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance;
 
-#if NET_4_0
                protected
-#else
-               internal
-#endif
                Module () {
                }
 
@@ -126,10 +122,7 @@ namespace System.Reflection {
                [SecurityPermission (SecurityAction.LinkDemand, SerializationFormatter = true)]
                public virtual void GetObjectData (SerializationInfo info, StreamingContext context) 
                {
-                       if (info == null)
-                               throw new ArgumentNullException ("info");
-
-                       UnitySerializationHolder.GetModuleData (this, info, context);
+                       throw new NotImplementedException ();
                }
 
                [ComVisible (true)]
@@ -219,18 +212,18 @@ namespace System.Reflection {
 
                private static bool filter_by_type_name (Type m, object filterCriteria) {
                        string s = (string)filterCriteria;
-                       if (s.EndsWith ("*"))
-                               return m.Name.StartsWith (s.Substring (0, s.Length - 1));
-                       else
-                               return m.Name == s;
+                       if (s.Length > 0 && s [s.Length - 1] == '*')
+                               return m.Name.StartsWithOrdinalUnchecked (s.Substring (0, s.Length - 1));
+                       
+                       return m.Name == s;
                }
 
                private static bool filter_by_type_name_ignore_case (Type m, object filterCriteria) {
                        string s = (string)filterCriteria;
-                       if (s.EndsWith ("*"))
-                               return m.Name.ToLower ().StartsWith (s.Substring (0, s.Length - 1).ToLower ());
-                       else
-                               return String.Compare (m.Name, s, true) == 0;
+                       if (s.Length > 0 && s [s.Length - 1] == '*')
+                               return m.Name.StartsWith (s.Substring (0, s.Length - 1), StringComparison.OrdinalIgnoreCase);
+                       
+                       return string.Compare (m.Name, s, StringComparison.OrdinalIgnoreCase) == 0;
                }
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
@@ -263,6 +256,7 @@ namespace System.Reflection {
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                internal static extern void GetPEKind (IntPtr module, out PortableExecutableKinds peKind, out ImageFileMachine machine);
 
+#if !MOBILE
                void _Module.GetIDsOfNames ([In] ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId)
                {
                        throw new NotImplementedException ();
@@ -283,8 +277,8 @@ namespace System.Reflection {
                {
                        throw new NotImplementedException ();
                }
+#endif
 
-#if NET_4_0
                public override bool Equals (object o)
                {
                        return o == (object) this;
@@ -313,9 +307,7 @@ namespace System.Reflection {
                        return !left.Equals (right);
                }
 
-#endif
 
-#if NET_4_0
 
                public virtual Assembly Assembly {
                        get { throw CreateNIE (); }
@@ -450,7 +442,9 @@ namespace System.Reflection {
                {
                        throw CreateNIE ();
                }
-#endif
 
+               public virtual IEnumerable<CustomAttributeData> CustomAttributes {
+                       get { return GetCustomAttributesData (); }
+               }
        }
 }