Способ или операция не реализована службой сканирования с помощью Autofac - PullRequest
0 голосов
/ 17 октября 2018

Доброе утро, у меня проблема.Я пытаюсь внедрить все классы, которые реализуют интерфейсы (Service и Repository), в контейнер IoC, используя Autofac, и в ответ я получил сообщение об ошибке «NotImplementedException: метод или операция не реализована».

                                  The full stack trace: 

enter image description here

Метод контроллера:

[HttpGet]
    public IEnumerable<User> GetAll() => _userContext.GetAlAsync().Result;

И реализация метода GetAll в реализации UserService выглядит следующим образом: класс IUserService реализует интерфейс маркера IService для внедрения класса в контейнер IoC:

public async Task<IEnumerable<User>> GetAlAsync()
    {
        return await _user.GetAllAsync();
    }

Контроллер возвращает правильное значение перед использованием autofac для регистрации типа в контейнере IoC

Реализация ModuleContainer с использованием Autofac:

public class ContainerModules : Autofac.Module
{
    private readonly IConfiguration _configuration;

    public ContainerModules(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    protected override void Load(ContainerBuilder builder)
    {
        builder.RegisterInstance(AutoMapperConfig.Initialize())
            .SingleInstance();
        builder.RegisterModule<ServiceModules>();
        builder.RegisterModule<CommandModule>();
        builder.RegisterModule<RepositoryModule>();

    }
}

и служебных модулей:

 public class ServiceModules :  Autofac.Module
{
    protected override void Load(ContainerBuilder builder)
    {
        var assembly = typeof(ServiceModules)
            .GetTypeInfo()
            .Assembly;

        builder.RegisterAssemblyTypes(assembly)
            .Where(x => x.IsAssignableTo<IService>())
            .AsImplementedInterfaces()
            .InstancePerLifetimeScope();

        builder.RegisterType<JwtHandler>()
            .As<IJwthandler>()
            .SingleInstance();

        builder.RegisterType<Encrypter>()
            .As<IEncrypter>()
            .SingleInstance();;                                             
        }
   }
...