From 782ca0137d0c17899aa404ac081b61f306798f36 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Sun, 18 Feb 2018 22:03:15 +0000 Subject: [PATCH] Support "@inherits ..." directive --- .../BlazorRazorEngine.cs | 1 + .../RazorCompilerTest.cs | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/BlazorRazorEngine.cs b/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/BlazorRazorEngine.cs index cc7842a081..66d29fb6d0 100644 --- a/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/BlazorRazorEngine.cs +++ b/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/BlazorRazorEngine.cs @@ -22,6 +22,7 @@ namespace Microsoft.AspNetCore.Blazor.Razor _engine = RazorEngine.Create(configure => { FunctionsDirective.Register(configure); + InheritsDirective.Register(configure); TemporaryLayoutPass.Register(configure); TemporaryImplementsPass.Register(configure); diff --git a/test/Microsoft.AspNetCore.Blazor.Build.Test/RazorCompilerTest.cs b/test/Microsoft.AspNetCore.Blazor.Build.Test/RazorCompilerTest.cs index 1a1e37a509..d042857d72 100644 --- a/test/Microsoft.AspNetCore.Blazor.Build.Test/RazorCompilerTest.cs +++ b/test/Microsoft.AspNetCore.Blazor.Build.Test/RazorCompilerTest.cs @@ -405,6 +405,22 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test frame => AssertFrame.Text(frame, "Hello")); } + [Fact] + public void SupportsInheritsDirective() + { + // Arrange/Act + var testBaseClassTypeName = typeof(TestBaseClass).FullName.Replace('+', '.'); + var component = CompileToComponent( + $"@inherits {testBaseClassTypeName}" + Environment.NewLine + + $"Hello"); + var frames = GetRenderTree(component); + + // Assert + Assert.IsAssignableFrom(component); + Assert.Collection(frames, + frame => AssertFrame.Text(frame, "Hello")); + } + private static RenderTreeFrame[] GetRenderTree(IComponent component) { var renderer = new TestRenderer(); @@ -554,5 +570,7 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test } public interface ITestInterface { } + + public class TestBaseClass : BlazorComponent { } } }