Autofa c запрашиваемая услуга не была зарегистрирована - PullRequest
0 голосов
/ 22 января 2020

Я совершенно новый в DI, поэтому я создал новый проект, чтобы понять, как он работает в простом проекте. У меня есть проект BLL, который имеет только

public interface IService
{
   string Method();
}

internal class SomeService : IService
{
   public string Method()
   {
       return "Hi from BLL";
   }
} 

class BllModule : Autofac.Module
{
   protected override void Load(ContainerBuilder builder)
   {
       builder.RegisterAssemblyTypes((Assembly.GetExecutingAssembly())
                     .Where(t => t.Name.EndsWith("Service"))
                     .AsImplementedInterfaces()
                     .InstancePerLifetimeScope();
   }
}

Я хочу разрешить эту службу в проекте пользовательского интерфейса.

class Program
{
    static void Main(string[] args)
    {
        //Autofac Configuration
        var builder = new ContainerBuilder();
        builder.RegisterModule(new BllModule());

        var container = builder.Build();
        // here i check if container contatins my type (just for debugging), so it has Service BLL.IService
        var s = container.ComponentRegistry.Registrations.ToList();
        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

        using (var scope = container.BeginLifetimeScope())
        {
            // so here i have my exception
            var service = scope.Resolve<IService>();
            service.Method();
        }
    }    
}

Поэтому код в использовании бросков блока

Autofac.Core.Registration.ComponentNotRegisteredException: 
"The requested service 'BLL.IService' has not been registered." 

Я обновил код, так что теперь он работает

...