0

我正在使用 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 中手动注册的,我不想手动注册项目中的所有类型。

任何想法如何解决这个问题?

谢谢你,丹尼尔

4

1 回答 1

0

按照惯例,该注册是使用名称注册所有类型。我想你可能想要这个...

Container.RegisterTypes(AllClasses.FromLoadedAssemblies(),
    WithMappings.FromMatchingInterface,
    WithName.Default,
    WithLifetime.Transient);
于 2015-05-11T20:26:30.357 回答