PropertyDefinition[] properties = GetProperties (type);
if (properties.Length > 0) {
- Array.Sort (properties, MemberReferenceComparer.Default);
+ Array.Sort (properties, PropertyDefinitionComparer.Default);
members.Add (new PropertyData (document, nclass, properties));
}
parent.AppendChild (natts);
}
- for (int i = 0; i < atts.Count; ++i) {
- CustomAttribute att = atts [i];
-
+ foreach (var att in atts.OrderBy ((a) => a.Constructor.DeclaringType.FullName)) {
string attName = Utils.CleanupTypeName (att.Constructor.DeclaringType);
if (SkipAttribute (att))
continue;
}
}
+ class PropertyDefinitionComparer : IComparer<PropertyDefinition>
+ {
+ public static PropertyDefinitionComparer Default = new PropertyDefinitionComparer ();
+
+ public int Compare (PropertyDefinition ma, PropertyDefinition mb)
+ {
+ int res = String.Compare (ma.Name, mb.Name);
+ if (res != 0)
+ return res;
+
+ if (!ma.HasParameters && !mb.HasParameters)
+ return 0;
+
+ if (!ma.HasParameters)
+ return -1;
+
+ if (!mb.HasParameters)
+ return 1;
+
+ return MethodDefinitionComparer.Compare (ma.Parameters, mb.Parameters);
+ }
+ }
+
class MethodDefinitionComparer : IComparer
{
public static MethodDefinitionComparer Default = new MethodDefinitionComparer ();
if (!mb.HasParameters)
return 1;
- IList<ParameterDefinition> pia = ma.Parameters ;
- IList<ParameterDefinition> pib = mb.Parameters;
- res = pia.Count - pib.Count;
+ return Compare (ma.Parameters, mb.Parameters);
+ }
+
+ public static int Compare (IList<ParameterDefinition> pia, IList<ParameterDefinition> pib)
+ {
+ var res = pia.Count - pib.Count;
if (res != 0)
return res;