diff --git a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpCodeBuilder.cs b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpCodeBuilder.cs index de30bf6624..4e307f0f9a 100644 --- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpCodeBuilder.cs +++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpCodeBuilder.cs @@ -31,15 +31,9 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp // Separate the usings and the class writer.WriteLine(); - var baseTypeVisitor = new CSharpBaseTypeVisitor(writer, Context); - baseTypeVisitor.Accept(Tree.Chunks); - - string baseType = baseTypeVisitor.CurrentBaseType ?? Host.DefaultBaseClass; new CSharpClassAttributeVisitor(writer, Context).Accept(Tree.Chunks); - IEnumerable baseTypes = String.IsNullOrEmpty(baseType) ? Enumerable.Empty() : - new string[] { baseType }; - using (writer.BuildClassDeclaration("public", Context.ClassName, baseTypes)) + using (BuildClassDeclaration(writer)) { if (Host.DesignTimeMode) { @@ -68,6 +62,18 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp return new CodeBuilderResult(writer.GenerateCode(), writer.LineMappingManager.Mappings); } + protected virtual CSharpCodeWritingScope BuildClassDeclaration(CSharpCodeWriter writer) + { + var baseTypeVisitor = new CSharpBaseTypeVisitor(writer, Context); + baseTypeVisitor.Accept(Tree.Chunks); + + var baseType = baseTypeVisitor.CurrentBaseType ?? Host.DefaultBaseClass; + + var baseTypes = string.IsNullOrEmpty(baseType) ? Enumerable.Empty() : new string[] { baseType }; + + return writer.BuildClassDeclaration("public", Context.ClassName, baseTypes); + } + protected virtual void BuildConstructor(CSharpCodeWriter writer) { writer.WriteLineHiddenDirective();