Я имею эту конфигурацию с Unity и призмой:авторегистрации с Unity и Prism не работает
public class EmployeeDataService : IEmployeeDataService
{
}
public class EmployeeController(IEmployeeDataService dataService)
{
this.dataService = dataService;
}
public class EmployeeModuleInit : IModule
{
readonly IUnityContainer container;
readonly IRegionManager regionManager;
readonly EmployeeController employeeController;
public EmployeeModuleInit(IUnityContainer container, IRegionManager regionManager, EmployeeController employeeController)
{
this.container = container;
this.regionManager = regionManager;
this.employeeController = employeeController;
}
}
типы отображаются с помощью:
Container.RegisterTypes(AllClasses.FromLoadedAssemblies(),
WithMappings.FromMatchingInterface,
WithName.TypeName,
WithLifetime.Transient);
Тем не менее, при запуске я нахожусь получаю эту ошибку:
{ «текущий типа, IEmployeeDataService, является интерфейсом и не может быть построен вы не нашли отображение типа?»}
IUnityContainer и IRegionManager правильно зарегистрированы и разрешены, однако они зарегистрированы вручную в Prism.UnityExtensions.UnityBootstrapper.cs, и я не хочу вручную регистрировать все типы в проекте.
Любые идеи, как это решить?
Спасибо, Daniel
Это частично верно. Контейнер может обнаруживать и регистрировать типы, используя указанную выше конфигурацию **, только **, если интерфейсы и типы реализации находятся в одной и той же сборке. В моем случае некоторые интерфейсы находятся в другой сборке, и регистрация все еще не работает. – bdaniel7
Возможно, сборка интерфейса еще не загружена. 'AllClasses.FromLoadedAssemblies()' будет только извлекать из сборок, которые были загружены средой выполнения. Для целей отладки попробуйте вызвать 'Assembly.Load (« InterfaceAssembly, Version = 1.0.0.0 ») перед вызовом Unity, чтобы узнать, не является ли это проблемой. – TylerOhlsen
Хорошо, ref. 'FromLoadedAssemblies()', я так думал. Но я изменил это на «AllClasses.FromAssembliesInBasePath()» и загрузил только сборки, специфичные для моего проекта. И это та же ошибка. Затем я явно загрузил сборку, содержащую интерфейсы, и снова ту же ошибку. – bdaniel7