我有一个模块“工具栏”,“工具栏”包含一个UserControl和一个ViewModel。 viewmodel应该将一个名为“IShapeService”的服务注入其构造函数中,但是存在问题。
运行我的应用程序时收到以下错误消息:
The current type, Core.Services.IShapeService, is an interface and cannot be constructed.
Are you missing a type mapping?
接口映射到ServicesModule中的类型,您可以在下面看到。
public class ServicesModule : IModule
{
private readonly IUnityContainer container;
public ServicesModule(IUnityContainer container)
{
this.container = container;
}
public void Initialize()
{
container.RegisterType<IShapeService, ShapeService>(new ContainerControlledLifetimeManager());
}
}
据调试我可以看出,问题是ServicesModule没有尽早加载。我很快尝试在模块上使用PriorityAttribute(你可以通过谷歌找到它),但这次没有运气。
奇怪的是,它正在另一个具有相同设置的项目中工作(到目前为止,我可以看到它是相同的设置)。另一个项目实际上也使用PriorityAttribute,但它是确定Tab键顺序。
这是解决方案结构的图像:
所有项目都引用Core,但也是如此。
你能发现我做错了吗?