Пример #1
0
        protected override string ProcessClass(GeneratorExecutionContext context, ISymbol @class,
                                               IEnumerable <IFieldSymbol> fields, INamedTypeSymbol attribute)
        {
            var builder = new SourceBuilder(@class.ContainingNamespace);

            builder.Imports.AddRange(new[] {
                "System",
                "System.Xml.Serialization",
            });
            builder.Classes.AddRange(@class.ContainingTypes().Select(symbol => symbol.Name));
            builder.Classes.Add(@class.Name);

            // create properties for each field
            builder.Code.AddRange(fields.Select(field => ProcessField(context, field, attribute)));

            return(builder.Build());
        }