-3

I am getting a version mismatch error when using MediatR in my .NET project.

What happened:

  • Yesterday my project worked correctly with no errors.
  • Today I updated some NuGet packages by mistake.
  • After that, I tried MediatR 10.0.0 → too many breaking changes.
  • Then I tried MediatR 8.0.1 → also incompatible.
  • Whatever version I install, I get interface or extension method errors.

My code:

Program.cs:

using udemycarbook.Application.Features.CQRS.Handlers.AboutHandlers;
using udemycarbook.Persistence.Context;
using udemycarbook.Application.Interfaces;
using udemycarbook.Persistence.Repositories;
using udemycarbook.Application.Features.CQRS.Handlers.BannerHandlers;
using udemycarbook.Application.Features.CQRS.Handlers.BrandHandlers;
using udemycarbook.Application.Features.CQRS.Handlers.CarHandlers;
using udemycarbook.Application.Interfaces.CarInterfaces;
using udemycarbook.Persistence.Repositories.CarRepository;
using udemycarbook.Application.Features.CQRS.Handlers.CategoryHandlers;
using udemycarbook.Application.Features.CQRS.Handlers.ContactHandlers;
using udemycarbook.Application.Services;
using UdemyCarBook.Application.Features.CQRS.Handlers.CarHandlers;


var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddScoped<CarBookContext>();
builder.Services.AddScoped(typeof (IRepository<>), typeof(Repository<>));
builder.Services.AddScoped(typeof (ICarRepository), typeof(CarRepository));

builder.Services.AddScoped<GetAboutQueryHandler>();
builder.Services.AddScoped<GetAboutByIdQueryHandler>();
builder.Services.AddScoped<CreateAboutCommandHandler>();
builder.Services.AddScoped<UpdateAboutCommandHandler>(); 
builder.Services.AddScoped<RemoveAboutCommandHandler>();

builder.Services.AddScoped<GetBannerQueryHandler>();
builder.Services.AddScoped<GetBannerByIdQueryHandler>();
builder.Services.AddScoped<CreateBannerCommandHandler>();
builder.Services.AddScoped<UpdateBannerCommandHandler>();
builder.Services.AddScoped<RemoveBannerCommandHandler>();

builder.Services.AddScoped<GetBrandQueryHandler>();
builder.Services.AddScoped<GetBrandByIdQueryHandler>();
builder.Services.AddScoped<CreateBrandCommandHandler>();
builder.Services.AddScoped<UpdateBrandCommandHandler>();
builder.Services.AddScoped<RemoveBrandCommandHandler>();

builder.Services.AddScoped<GetCarQueryHandler>();
builder.Services.AddScoped<GetCarByIdQueryHandler>();
builder.Services.AddScoped<CreateCarCommandHandler>();
builder.Services.AddScoped<UpdateCarCommandHandler>();
builder.Services.AddScoped<RemoveCarCommandHandler>();
builder.Services.AddScoped<GetCarWithBrandQueryHandler>();
builder.Services.AddScoped<GetLast5CarsWithBrandQueryHandler>();

builder.Services.AddScoped<GetCategoryQueryHandler>();
builder.Services.AddScoped<GetCategoryByIdQueryHandler>();
builder.Services.AddScoped<CreateCategoryCommandHandler>();
builder.Services.AddScoped<UpdateCategoryCommandHandler>();
builder.Services.AddScoped<RemoveCategoryCommandHandler>();

builder.Services.AddScoped<GetContactQueryHandler>();
builder.Services.AddScoped<GetContactByIdQueryHandler>();
builder.Services.AddScoped<CreateContactCommandHandler>();
builder.Services.AddScoped<UpdateContactCommandHandler>();
builder.Services.AddScoped<RemoveContactCommandHandler>();

builder.Services.AddApplicationService(builder.Configuration);



builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

CreateFeatureCommand:

using MediatR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace udemycarbook.Application.Features.Mediator.Commands.FeatureCommands
{
    public class CreateFeatureCommand : IRequest
    {
        public string Description { get; set; }
        public string Address { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }
        public string Name { get;  set; }
    }
}

CreateFeatureCommandHandler:

using MediatR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using udemycarbook.Application.Features.Mediator.Commands.FeatureCommands;
using udemycarbook.Application.Interfaces;
using UdemyCarBookDomain.Entities;


namespace udemycarbook.Application.Features.Mediator.Handlers.FeatureHandlers
{
    public class CreateFeatureCommandHandler : IRequestHandler<CreateFeatureCommand>
    {
        private readonly IRepository<Feature> _repository;

        public CreateFeatureCommandHandler(IRepository<Feature> repository)
        {
            _repository = repository;
        }

        public async Task Handle(CreateFeatureCommand request, CancellationToken cancellationToken)
        {
            await _repository.CreateAsync(new Feature
            {
                Name = request.Name
            });

        }

        Task<Unit> IRequestHandler<CreateFeatureCommand, Unit>.Handle(CreateFeatureCommand request, CancellationToken cancellationToken)
        {
            throw new NotImplementedException();
        }
    }
}

Errors I get:

Inside of image i add, but right now i fixed those errors by adding this

Task<Unit> IRequestHandler<CreateFeatureCommand, Unit>.Handle(CreateFeatureCommand request, CancellationToken cancellationToken)
{
    throw new NotImplementedException();
}

to each of them, for now i get this

'MediatRServiceConfiguration' does not contain a definition for 'RegisterServicesFromAssembly' and no accessible extension method 'RegisterServicesFromAssembly' accepting a first argument of type 'MediatRServiceConfiguration' could be found (are you missing a using directive or an assembly reference?)

and this

Metadata file "'C:\Users\yunus\source\repos\udemycarbook\Core\udemycarbook.Application\obj\Debug\net8.0\ref\udemycarbook.Application.dll' could not be found"

I want to know:

  • Which MediatR version matches my code syntax?
  • How should I correctly register MediatR in Program.cs?

you can see my errors in here, it's saying that i need to add somethings but just a day ago it wasn't necessary.

2
  • 1
    To work out what dependencies you have, from a command prompt open at your solution directory run dotnet package list --include-transitive. Commented Nov 21 at 9:47
  • 1
    If you had used a VCS like git or something similar you could simply see your changes and easily switch back to an older working state. Nearly nobody can tell you which version of a lib to use by just looking at your code. Commented Nov 23 at 9:30

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.