Exemple #1
0
        private void ConvertInstanceMembersToStaticMembers()
        {
            // Mark the following members on Array, ArrayList, Queue and Stack
            // as generated static, as they aren't implemented as instance/prototype
            // members at runtime.

            string[] members = new string[] {
                "Add", "AddRange", "Aggregate", "Clear", "Clone", "Contains",
                "Dequeue", "Enqueue", "Every", "Extract", "Filter", "ForEach",
                "GetEnumerator", "GroupBy", "Index", "IndexOf", "Insert", "InsertRange",
                "Map", "Peek", "Remove", "RemoveAt", "RemoveRange", "Some"
            };

            foreach (TypeSymbol typeSymbol in _importedTypes)
            {
                if ((typeSymbol.Type == SymbolType.Class) &&
                    (typeSymbol.Name.Equals("Array", StringComparison.Ordinal) ||
                     typeSymbol.Name.Equals("ArrayList", StringComparison.Ordinal) ||
                     typeSymbol.Name.Equals("ArrayGrouping", StringComparison.Ordinal) ||
                     typeSymbol.Name.Equals("Queue", StringComparison.Ordinal) ||
                     typeSymbol.Name.Equals("Stack", StringComparison.Ordinal)))
                {
                    foreach (string memberName in members)
                    {
                        MethodSymbol methodSymbol = typeSymbol.GetMember(memberName) as MethodSymbol;
                        if ((methodSymbol != null) && ((methodSymbol.Visibility & MemberVisibility.Static) == 0))
                        {
                            methodSymbol.GenerateAsStaticMethod();
                        }
                    }
                }
            }
        }