private CodeGeneratorBase CreateGenerators(ContentTypeConfiguration c, CodeGeneratorBase infoGenerator, IEnumerable <DataTypeDefinition> dataTypes)
 {
     return(new NamespaceGenerator(c,
                                   new ImportsGenerator(c),
                                   new ClassGenerator(c,
                                                      new EntityDescriptionGenerator(c),
                                                      new CtorGenerator(c),
                                                      infoGenerator,
                                                      new StructureGenerator(c),
                                                      new PropertiesGenerator(c,
                                                                              new PropertyInfoGenerator(c, dataTypes.ToList(), new EntityDescriptionGenerator(c)),
                                                                              new PropertyBodyGenerator(c)
                                                                              )
                                                      )
                                   ));
 }
 private static CodeGeneratorBase CreateGenerators(
     ContentTypeConfiguration configuration,
     IEnumerable <DataTypeDefinition> dataTypes,
     string attributeName,
     CodeGeneratorBase infoGenerator)
 {
     return(new NamespaceGenerator(
                configuration,
                new ImportsGenerator(configuration),
                new ClassGenerator(configuration,
                                   new CompositeCodeGenerator(
                                       configuration,
                                       new EntityNameGenerator(configuration),
                                       new AttributeCodeGenerator(
                                           attributeName,
                                           configuration,
                                           infoGenerator,
                                           new StructureGenerator(configuration)
                                           )
                                       ),
                                   new BaseSupportedAnnotated.CtorGenerator(configuration),
                                   new PropertiesGenerator(
                                       configuration,
                                       new PublicPropertyDeclarationGenerator(
                                           configuration,
                                           dataTypes.ToList(),
                                           new EntityNameGenerator(configuration),
                                           new AttributeCodeGenerator(
                                               "GenericProperty",
                                               configuration,
                                               new PropertyInfoGenerator(configuration, dataTypes.ToList())
                                               ),
                                           new BaseSupportedAnnotated.PropertyBodyGenerator(configuration)
                                           )
                                       )
                                   )
                ));
 }