コード例 #1
0
        public override MethodEmitter Method(MethodDeclaration signature)
        {
            StringBuilder target = new StringBuilder();

            if (signature.Constructor)
            {
                if (signature.Static)
                {
                    target.Append("    static\n    {\n");
                    return(new MethodSourceWriter(target, this));
                }
                else
                {
                    target.Append("    ").Append(Modifier.ToString(signature.Modifiers())).Append(" ");
                    TypeParameters(target, signature);
                    target.Append(signature.DeclaringClass().name());
                }
            }
            else
            {
                target.Append("    ").Append(Modifier.ToString(signature.Modifiers())).Append(" ");
                TypeParameters(target, signature);
                target.Append(signature.ReturnType().fullName()).Append(" ").Append(signature.Name());
            }
            target.Append("(");
            string prefix = " ";

            foreach (Parameter parameter in signature.Parameters())
            {
                target.Append(prefix).Append(parameter.Type().fullName()).Append(" ").Append(parameter.Name());
                prefix = ", ";
            }
            if (prefix.Length > 1)
            {
                target.Append(" ");
            }
            target.Append(')');
            string sep = " throws ";

            foreach (TypeReference thrown in signature.ThrowsList())
            {
                target.Append(sep).Append(thrown.FullName());
                sep = ", ";
            }
            target.Append("\n    {\n");
            return(new MethodSourceWriter(target, this));
        }