コード例 #1
0
        private static void SortOptionSets(CodeCompileUnit codeUnit)
        {
            // Attempt to order by name by copying to temp collection, removing all from real collection, then adding back ordered by the name
            var temp = new CodeNamespace[codeUnit.Namespaces.Count];
            codeUnit.Namespaces.CopyTo(temp, 0);

            for (int i = 0; i < codeUnit.Namespaces.Count; i++)
            {
                codeUnit.Namespaces.RemoveAt(i);
            }
            codeUnit.Namespaces.AddRange(temp.OrderBy(n => n.Name).ToArray());

            for (int i = codeUnit.Namespaces.Count - 1; i >= 0; i--)
            {
                var nameSpace = codeUnit.Namespaces[i];

                // Attempt to order by name by copying to temp collection, removing all from real collection, then adding back ordered by the name
                var tmpType = new CodeTypeDeclaration[nameSpace.Types.Count];
                nameSpace.Types.CopyTo(tmpType, 0);

                for (int j = nameSpace.Types.Count - 1; j >= 0; j--)
                {
                    var type = nameSpace.Types[j];
                    nameSpace.Types.RemoveAt(j);

                    var tmpMember = new CodeTypeMember[type.Members.Count];
                    type.Members.CopyTo(tmpMember, 0);

                    for (int k = type.Members.Count - 1; k >= 0; k--)
                    {
                        type.Members.RemoveAt(k);
                    }
                    type.Members.AddRange(tmpMember.OrderBy(m => m.Name).ToArray());
                }
                nameSpace.Types.AddRange(tmpType.OrderBy(n => n.Name).ToArray());
            }
        }