Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

Errors persist when rebuilding fixed .NET 9.0 Blazor web app (but not in Incognito) [closed]

$
0
0

I've loaded the Blazor web app template in Visual Studio, and I'm using .NET 9.0. I was doing some experimentation with dependency injection in order to try to get a good understanding of how that worked within Blazor.

I was able to create a simple DI scenario that worked, but then as I experimented, I introduced a bug that broke the DI. When I tried to retrace my steps, the original code no longer worked (except in Incognito mode). I made of a point of "Cleaning" my solution prior to build assuming there was some sort of rogue artifact causing problems, but the problem persisted.

It has me second-guessing my incremental changes that didn't seem to work (was I running the code I thought I was, or was there something persisting that I wasn't aware of?)

I don't think the specifics of my code are particularly relevant, but I can give a bit of background. Basically, I created a ICounterService to use with the sample Counter page (in the WebClient.App project of the templated solution). I created a "variable" implementation of that which takes an integer in the constructor, and then a SingleStep version that inherits the variable implementation, but with a value of 1.

The CounterPage uses the service, then, to increment that counter value.

Modified Counter.razor:

@page "/counter"@rendermode InteractiveWebAssembly@inject ICountService CountService<PageTitle>Counter</PageTitle><h1>Counter</h1><p role="status">Current count: @currentCount</p><button class="btn btn-primary" @onclick="IncrementCount">Click me</button>@code {    private int currentCount = 0;    private void IncrementCount()    {        Console.WriteLine("Incrementing counter with count service...");        currentCount = currentCount + CountService.GetStep();    }}

My dependency "Counter Service" components:

public interface ICountService{    int GetStep();}public class VariableCountService : ICountService{    protected int StepSize { get; set; }    public VariableCountService(int stepSize)    {        StepSize = stepSize;    }    public int GetStep()    {        return StepSize;    }    public override string ToString()    {        return $"Variable Counter [{StepSize}]";    }}public class SingleStepCountService : VariableCountService{    public SingleStepCountService()        : base(1)    { }    public override string ToString()    {        return $"Single Step Counter";    }}

This is my Program.cs file:

    public class Program    {        public static void Main(string[] args)        {            var builder = WebApplication.CreateBuilder(args);            // Add services to the container.            builder.Services.AddRazorComponents()                .AddInteractiveServerComponents()                .AddInteractiveWebAssemblyComponents();             // This WORKS             builder.Services.AddScoped<ICountService, SingleStepCountService>();             // This does NOT             // builder.Services.AddSingleton<ICountService>(new VariableCountService(2));            // This does NOT            //var counter = new VariableCountService(2);            //builder.Services.AddSingleton<ICountService>(counter);            // This does NOT                //var counter = new VariableCountService(2);            //builder.Services.AddSingleton<ICountService, VariableCountService>((x) => { return counter; });            var app = builder.Build();            // SNIP            app.Run();        }    }}

The code by the green arrow worked. I made incremental steps that didn't (yellow), but when I rolled back, original no longer worked (except in Incognito)

enter image description here


Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>