示例#1
0
        public void VisitAttributeList(AttributeListSyntax node)
        {
            if (node == null)
                throw new ArgumentNullException("node");

            node.Validate();

            _writer.WriteSyntax(Syntax.OpenBracket);

            if (_writer.Configuration.Spaces.Other.WithinAttributeBrackets)
                _writer.WriteSpace();

            if (node.Target != AttributeTarget.None)
            {
                switch (node.Target)
                {
                    case AttributeTarget.Assembly: _writer.WriteKeyword(PrinterKeyword.Assembly); break;
                    case AttributeTarget.Event: _writer.WriteKeyword(PrinterKeyword.Event); break;
                    case AttributeTarget.Field: _writer.WriteKeyword(PrinterKeyword.Field); break;
                    case AttributeTarget.Method: _writer.WriteKeyword(PrinterKeyword.Method); break;
                    case AttributeTarget.Module: _writer.WriteKeyword(PrinterKeyword.Module); break;
                    case AttributeTarget.Param: _writer.WriteKeyword(PrinterKeyword.Param); break;
                    case AttributeTarget.Property: _writer.WriteKeyword(PrinterKeyword.Property); break;
                    case AttributeTarget.Return: _writer.WriteKeyword(PrinterKeyword.Return); break;
                    case AttributeTarget.Type: _writer.WriteKeyword(PrinterKeyword.Type); break;
                    default: throw ThrowHelper.InvalidEnumValue(node.Target);
                }

                if (_writer.Configuration.Spaces.Other.BeforeColonInAttribute)
                    _writer.WriteSpace();

                _writer.WriteSyntax(Syntax.Colon);

                if (_writer.Configuration.Spaces.Other.AfterColonInAttribute)
                    _writer.WriteSpace();
            }

            bool hadOne = false;

            foreach (var attribute in node.Attributes)
            {
                if (hadOne)
                    _writer.WriteListSeparator();
                else
                    hadOne = true;

                attribute.Accept(this);
            }

            if (_writer.Configuration.Spaces.Other.WithinAttributeBrackets)
                _writer.WriteSpace();

            _writer.WriteSyntax(Syntax.CloseBracket);
        }