コード例 #1
0
        public static string FromContainer(IWrappedTypeContainer container, string namespaceForWrappers)
        {
            var typeOptions = new TypeGeneratorOptionsBuilder(TypeNamingStrategy)
                              .WithPartial()
                              .WithPublic()
                              .Build();

            var contractOptions = new ContractGeneratorOptionsBuilder(ContractNamingStrategy)
                                  .WithPartial()
                                  .WithPublic()
                                  .ExcludeMembersDeclaredOn <object>()
                                  .Build();

            var typeGenerator = new TypeGenerator(typeOptions, container);

            var contractGenerator = new ContractGenerator(contractOptions, container);

            var codeGenerator = new CodeGenerator();

            var ns = new CodeNamespace(namespaceForWrappers);

            foreach (var type in container.RegisteredTypes)
            {
                ns.Types.Add(
                    contractGenerator.GenerateDeclaration(type)
                    );
            }

            foreach (var type in container.RegisteredTypes)
            {
                ns.Types.Add(
                    typeGenerator.GenerateDeclaration(type)
                    );
            }

            var targetUnit = new CodeCompileUnit();

            targetUnit.Namespaces.Add(ns);

            return(codeGenerator.GenerateCode(targetUnit));
        }