From 5912475a248d293b86b13edb3d52cd08b01cec87 Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Thu, 13 Mar 2014 16:18:44 -0700 Subject: [PATCH] Change Execute rendering to be async. Added the using statement required for async rendering. --- .../CSharpRazorCodeLanguage.cs | 4 ++-- .../CodeBuilder/CSharp/CSharpCodeBuilder.cs | 13 +++++++++++-- .../Generator/GeneratedClassContext.cs | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.AspNet.Razor/CSharpRazorCodeLanguage.cs b/src/Microsoft.AspNet.Razor/CSharpRazorCodeLanguage.cs index 6a2d921f15..3c312fa5e3 100644 --- a/src/Microsoft.AspNet.Razor/CSharpRazorCodeLanguage.cs +++ b/src/Microsoft.AspNet.Razor/CSharpRazorCodeLanguage.cs @@ -41,9 +41,9 @@ namespace Microsoft.AspNet.Razor return new CSharpRazorCodeGenerator(className, rootNamespaceName, sourceFileName, host); } - public override CodeBuilder CreateCodeBuilder(CodeGeneratorContext codeGeneratorContext) + public override CodeBuilder CreateCodeBuilder(CodeGeneratorContext context) { - return new CSharpCodeBuilder(codeGeneratorContext); + return new CSharpCodeBuilder(context); } } } 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 23bf4d233b..95e8f7d928 100644 --- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpCodeBuilder.cs +++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpCodeBuilder.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp { @@ -43,7 +44,7 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp new CSharpHelperVisitor(writer, Context).Accept(Tree.Chunks); new CSharpTypeMemberVisitor(writer, Context).Accept(Tree.Chunks); new CSharpDesignTimeHelpersVisitor(writer, Context).AcceptTree(Tree); - + writer.WriteLineHiddenDirective(); using (writer.BuildConstructor(Context.ClassName)) { @@ -53,7 +54,7 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp // Add space inbetween constructor and method body writer.WriteLine(); - using (writer.BuildMethodDeclaration("public override", "void", Host.GeneratedClassContext.ExecuteMethodName)) + using (writer.BuildMethodDeclaration("public override async", "Task", Host.GeneratedClassContext.ExecuteMethodName)) { new CSharpCodeVisitor(writer, Context).Accept(Tree.Chunks); } @@ -78,6 +79,14 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp { writer.WriteUsing(import); } + + string taskNamespace = typeof(Task).Namespace; + + // We need to add the task namespace but ONLY if it hasn't been added by the default imports or using imports yet. + if(!defaultImports.Contains(taskNamespace) && !usingVisitor.ImportedUsings.Contains(taskNamespace)) + { + writer.WriteUsing(taskNamespace); + } } } } diff --git a/src/Microsoft.AspNet.Razor/Generator/GeneratedClassContext.cs b/src/Microsoft.AspNet.Razor/Generator/GeneratedClassContext.cs index 4037e7f6e3..924b0398ac 100644 --- a/src/Microsoft.AspNet.Razor/Generator/GeneratedClassContext.cs +++ b/src/Microsoft.AspNet.Razor/Generator/GeneratedClassContext.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNet.Razor.Generator { public static readonly string DefaultWriteMethodName = "Write"; public static readonly string DefaultWriteLiteralMethodName = "WriteLiteral"; - public static readonly string DefaultExecuteMethodName = "Execute"; + public static readonly string DefaultExecuteMethodName = "ExecuteAsync"; public static readonly string DefaultLayoutPropertyName = "Layout"; public static readonly string DefaultWriteAttributeMethodName = "WriteAttribute"; public static readonly string DefaultWriteAttributeToMethodName = "WriteAttributeTo";