Autofac.Core.DependencyResolutionException, но все зарегистрировано - PullRequest
0 голосов
/ 24 мая 2018

У меня есть эта часть кода:

var _containerBuilder = new ContainerBuilder();
_containerBuilder.RegisterType<NavigationService>().As<INavigationService>();

var container = _containerBuilder.Build();

using (var scope = container.BeginLifetimeScope())
{
    var navigationService = scope.Resolve<INavigationService>();
}

Это приводит к исключению времени выполнения, когда я делаю решение:

Autofac.Core.DependencyResolutionException: произошла ошибкаво время активации определенной регистрации.Смотрите внутреннее исключение для деталей.Регистрация: Activator = NavigationService (ReflectionActivator), Services = [MyProject.Services.Navigation.INavigationService], Lifetime = Autofac.Core.Lifetime.CurrentScopeLifetime, Sharing = Нет, Ownership = OwnedByLifetimeScope ---> Не найдено доступных конструкторов для типа'MyProject.Services.Navigation.NavigationService.(Подробности см. Во внутреннем исключении.)

Мой интерфейс пуст, как и мой класс, имеющий конструктор без параметров.Мой проект - это проект Xamarin.Forms, использующий стандарт .Net 2.0, а моя версия autofac является последней стабильной (4.8.1).

Я не в курсе, так как все примеры проектов, кажется, не очень многоподробнее.

Как я уже сказал, я опустошил класс и интерфейс, чтобы посмотреть, возникла ли проблема, но у меня все еще есть исключение.

public interface INavigationService { }

public class NavigationService:INavigationService
 { 

 public NavigationService()
      { 
      }

 }

1 Ответ

0 голосов
/ 30 мая 2018

Возможно, это звучит глупо, но в итоге все заработало после того, как я удалил и заново создал свой проект.Я уверен, что это были те же классы, которые я только копировал / вставлял.

Единственное отличие состоит в том, что перед Autofac в проекте KO были установлены другие нюги (например, EntityFramework Sqlite).В проекте OK моей первой установкой nuget был Autofac.

...