Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

What's wrong in the dependency injection?

What’s wrong with my dependency injection? I followed C# tutorials, but it seems like I’m missing something.

HomeController

    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        private readonly ICliente _cliente;

        public HomeController(ILogger<HomeController> logger, ICliente ClienteService)
        {
            _logger = logger;
            _cliente = ClienteService;
        }

ICliente

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

namespace Lanchonete.Interfaces
{
    public interface ICliente
    {
        public void TestarCliente();
    }
}

ClienteService

using Lanchonete.Interfaces;


namespace Lanchonete.Services
{
    public class ClienteService : ICliente
    {
        public void TestarCliente()
        {
            Console.WriteLine("TESTE OK");
        }
    }
}

Function using the ID

        public IActionResult Resposta(Produto produto)
        {
            _cliente.TestarCliente();
            return Redirect("/Home/Index");
        }

Program.cs

using Lanchonete.Interfaces;
using Lanchonete.Models;
using Lanchonete.Services;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

builder.Services.AddTransient<ICliente, ClienteService>();

Error from the browser

An unhandled exception occurred while processing the request.
InvalidOperationException: Unable to resolve service for type ‘Lanchonete.Interfaces.ICliente’ while attempting to activate ‘Lanchonete.Controllers.HomeController’.

Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, bool isDefaultParameterRequired)

>Solution :

You need add the service to the container before you invoke app.Run()

i.e.:

builder.Services.AddTransient<ICliente, ClienteService>(); // Move this here
app.Run();
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading