diff --git a/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/ImplementsDirectivePass.cs b/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/ImplementsDirectivePass.cs index f503af50da..23ca598ee1 100644 --- a/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/ImplementsDirectivePass.cs +++ b/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/ImplementsDirectivePass.cs @@ -30,7 +30,6 @@ namespace Microsoft.AspNetCore.Blazor.Razor if (token != null) { @class.Interfaces.Add(token.Content); - break; } } } diff --git a/test/Microsoft.AspNetCore.Blazor.Build.Test/DirectiveRazorIntegrationTest.cs b/test/Microsoft.AspNetCore.Blazor.Build.Test/DirectiveRazorIntegrationTest.cs index e314d07a90..531f18b16f 100644 --- a/test/Microsoft.AspNetCore.Blazor.Build.Test/DirectiveRazorIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Blazor.Build.Test/DirectiveRazorIntegrationTest.cs @@ -58,6 +58,25 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test frame => AssertFrame.Text(frame, "Hello")); } + [Fact] + public void SupportsMultipleImplementsDeclarations() + { + // Arrange/Act + var testInterfaceTypeName = FullTypeName(); + var testInterfaceTypeName2 = FullTypeName(); + var component = CompileToComponent( + $"@implements {testInterfaceTypeName}\n" + + $"@implements {testInterfaceTypeName2}\n" + + $"Hello"); + var frames = GetRenderTree(component); + + // Assert + Assert.IsAssignableFrom(component); + Assert.IsAssignableFrom(component); + Assert.Collection(frames, + frame => AssertFrame.Text(frame, "Hello")); + } + [Fact] public void SupportsInheritsDirective() { @@ -135,6 +154,8 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test public interface ITestInterface { } + public interface ITestInterface2 { } + public class TestBaseClass : BlazorComponent { } public interface IMyService1 { }