Доброе утро, у меня проблема.Я пытаюсь внедрить все классы, которые реализуют интерфейсы (Service и Repository), в контейнер IoC, используя Autofac, и в ответ я получил сообщение об ошибке «NotImplementedException: метод или операция не реализована».
The full stack trace:
![enter image description here](https://i.stack.imgur.com/wk2Vq.png)
Метод контроллера:
[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();;
}
}