protected override void GenerateGateway(CodeGenerationContext codeGenerationContext, TypeDefinitionExpression expression)
        {
            using (var writer = this.GetTextWriterForFile(expression.Type.Name + ".cs"))
            {
                var classFileExpression = CSharpGatewayExpressionBinder.Bind(codeGenerationContext, expression);

                var codeGenerator = new CSharpCodeGenerator(writer, this.mappedTypes);

                codeGenerator.Generate(classFileExpression);
            }
        }
        protected override void GenerateClass(CodeGenerationContext codeGenerationContext, TypeDefinitionExpression expression)
        {
            if (this.mappedTypes.ContainsKey(expression.Type.Name))
            {
                return;
            }

            using (var writer = this.GetTextWriterForFile(expression.Type.Name + ".cs"))
            {
                var classFileExpression = CSharpClassExpressionBinder.Bind(codeGenerationContext, expression);

                var codeGenerator = new CSharpCodeGenerator(writer, this.mappedTypes);

                codeGenerator.Generate(classFileExpression);
            }
        }
        protected override void GenerateEnum(CodeGenerationContext codeGenerationContext, TypeDefinitionExpression expression)
        {
            if (this.mappedTypes.ContainsKey(expression.Type.Name))
            {
                return;
            }

            using (var writer = this.GetTextWriterForFile(expression.Type.Name + ".cs"))
            {
                var enumFileExpression = CSharpEnumExpressionBinder.Bind(codeGenerationContext, expression);

                var codeGenerator = new CSharpCodeGenerator(writer, this.mappedTypes);

                codeGenerator.Generate(enumFileExpression);
            }
        }
        protected override void GenerateGateway(CodeGenerationContext codeGenerationContext, TypeDefinitionExpression expression)
        {
            using (var writer = this.GetTextWriterForFile(expression.Type.Name + ".cs"))
            {
                var classFileExpression = CSharpGatewayExpressionBinder.Bind(codeGenerationContext, expression);

                var codeGenerator = new CSharpCodeGenerator(writer, this.mappedTypes);

                codeGenerator.Generate(classFileExpression);
            }
        }