C#Unity为什么模块加载太晚了?

时间:2017-10-20 22:17:49

标签: c# wpf module unity-container

我有一个模块“工具栏”,“工具栏”包含一个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键顺序。

这是解决方案结构的图像:

anonymous

所有项目都引用Core,但也是如此。

你能发现我做错了吗?

0 个答案:

没有答案