diff --git a/src/Components/Components/src/RenderFragment.cs b/src/Components/Components/src/RenderFragment.cs
index e5016ddfeae1..f1c28f34a624 100644
--- a/src/Components/Components/src/RenderFragment.cs
+++ b/src/Components/Components/src/RenderFragment.cs
@@ -18,4 +18,4 @@ namespace Microsoft.AspNetCore.Components;
///
/// The type of object.
/// The value used to build the content.
-public delegate RenderFragment RenderFragment(TValue value);
+public delegate RenderFragment RenderFragment(TValue value);
diff --git a/src/Components/Components/test/RenderFragmentContravarianceTest.cs b/src/Components/Components/test/RenderFragmentContravarianceTest.cs
new file mode 100644
index 000000000000..3aefe197b505
--- /dev/null
+++ b/src/Components/Components/test/RenderFragmentContravarianceTest.cs
@@ -0,0 +1,107 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using Microsoft.AspNetCore.Components.Rendering;
+
+namespace Microsoft.AspNetCore.Components.Test;
+
+public class RenderFragmentContravarianceTest
+{
+ [Fact]
+ public void RenderFragment_SupportsContravariance_WithBaseClass()
+ {
+ // Arrange
+ var builder = new RenderTreeBuilder();
+ RenderFragment animalFragment = (Animal animal) => innerBuilder =>
+ {
+ innerBuilder.AddContent(0, $"Animal: {animal.Name}");
+ };
+
+ // Act - Assign to a variable expecting a more derived type (contravariance)
+ RenderFragment dogFragment = animalFragment;
+ var dog = new Dog { Name = "Buddy", Breed = "Golden Retriever" };
+ var result = dogFragment(dog);
+
+ // Assert - Should compile and work without exception
+ result(builder);
+ Assert.NotNull(result);
+ }
+
+ [Fact]
+ public void RenderFragment_SupportsContravariance_WithInterface()
+ {
+ // Arrange
+ var builder = new RenderTreeBuilder();
+ RenderFragment> listFragment = (IList items) => innerBuilder =>
+ {
+ foreach (var item in items)
+ {
+ innerBuilder.AddContent(0, item);
+ }
+ };
+
+ // Act - Assign to a variable expecting a more specific type (contravariance)
+ RenderFragment> specificListFragment = listFragment;
+ var list = new List { "Item1", "Item2", "Item3" };
+ var result = specificListFragment(list);
+
+ // Assert - Should compile and work without exception
+ result(builder);
+ Assert.NotNull(result);
+ }
+
+ [Fact]
+ public void RenderFragment_SupportsContravariance_InMethodParameter()
+ {
+ // Arrange
+ RenderFragment animalFragment = (Animal animal) => innerBuilder =>
+ {
+ innerBuilder.AddContent(0, $"Animal: {animal.Name}");
+ };
+
+ var dog = new Dog { Name = "Max", Breed = "Labrador" };
+ var builder = new RenderTreeBuilder();
+
+ // Act - Pass base type fragment to method expecting derived type fragment
+ ProcessDogFragment(animalFragment, dog, builder);
+
+ // Assert - Should compile and work without exception
+ Assert.True(true); // If we got here, contravariance worked
+ }
+
+ [Fact]
+ public void RenderFragment_SupportsContravariance_WithObject()
+ {
+ // Arrange
+ var builder = new RenderTreeBuilder();
+ RenderFragment