Exemplo n.º 1
0
        public static void Write(this ClassDeclarationSyntax syntax, IIndentedTextWriterWrapper textWriter, IContext context)
        {
            var symbol = symbolCache.ContainsKey(syntax) ? symbolCache[syntax] : context.SemanticModel.GetDeclaredSymbol(syntax);

            symbolCache[syntax] = symbol;

            WrappingException.TryActionAndWrapException(() =>
            {
                switch ((ClassState)(context.PartialElementState.CurrentState ?? 0))
                {
                default:
                    WriteOpen(syntax, textWriter, context, symbol);
                    context.PartialElementState.NextState = (int)ClassState.TypeGeneration;
                    break;

                case ClassState.TypeGeneration:
                    WriteTypeGenerator(syntax, textWriter, context);
                    context.PartialElementState.NextState = (int)ClassState.WriteStaticValues;
                    break;

                case ClassState.WriteStaticValues:
                    WriteStaticValues(syntax, textWriter, context);
                    context.PartialElementState.NextState = (int)ClassState.WriteInitialize;
                    break;

                case ClassState.WriteInitialize:
                    WriteInitialize(syntax, textWriter, context);
                    context.PartialElementState.NextState = (int)ClassState.WriteMembers;
                    break;

                case ClassState.WriteMembers:
                    WriteMembers(syntax, textWriter, context);
                    context.PartialElementState.NextState = (int)ClassState.Close;
                    break;

                case ClassState.Close:
                    WriteClose(textWriter, context);
                    context.PartialElementState.NextState = null;
                    break;

                case ClassState.Footer:
                    WriteFooter(textWriter, context, symbol);
                    context.PartialElementState.NextState = null;
                    break;
                }
            },
                                                        $"In visiting of class {context.SemanticAdaptor.GetFullName(symbol)}. State: {((ClassState)(context.PartialElementState.CurrentState ?? 0))}");
        }
        public static void Write(this InterfaceDeclarationSyntax syntax, IIndentedTextWriterWrapper textWriter, IContext context)
        {
            WrappingException.TryActionAndWrapException(() =>
            {
                switch ((InterfaceState)(context.PartialElementState.CurrentState ?? 0))
                {
                default:
                    WriteOpen(syntax, textWriter, context);
                    context.PartialElementState.NextState = (int)InterfaceState.Members;
                    break;

                case InterfaceState.Members:
                    WriteMembers(syntax, textWriter, context);
                    context.PartialElementState.NextState = (int)InterfaceState.Close;
                    break;

                case InterfaceState.Close:
                    WriteClose(textWriter, context);
                    context.PartialElementState.NextState = null;
                    break;
                }
            },
                                                        $"In visiting of interface {syntax.Identifier.Text}. State: {((InterfaceState) (context.PartialElementState.CurrentState ?? 0))}");
        }