Unity - 依赖项的解析失败(未注册)

时间:2012-12-06 20:57:46

标签: c# unity-container

我在这行代码上遇到错误:

    using (IMaterialClient rawMaterialServiceProxy =
ServerUtility.Container.Resolve<IMaterialClient>())

错误:

  

依赖关系的解析失败...当前类型Xxx是一个   界面,不能构造。你错过了类型映射吗?

我没有注册具体的IMaterialClient。在我刚看过的Pluralsight视频中,他们说你不必注册所有类型,因为如果没有指定,Unity会找到一个实现。这改变了吗?我错过了什么吗?为什么不解决这个问题?运行此程序时,具有实际IMaterialClient实现的程序集位于bin文件夹中。

2 个答案:

答案 0 :(得分:5)

如果他们说关于Unity,他们就错了。 Unity将解析具体类型(.Resolve<MyClass>),但必须通过将接口与具体类型相关联来显式注册接口。

Unity Auto Registration等扩展程序可以提供这些功能;我对他们没有经验。

答案 1 :(得分:5)

我不知道Unity中的这个功能。据我所知,它将很乐意解决未注册的具体类型,但必须为任何抽象类型或接口注册具体类型。最好的办法是注册它:

ServerUtility.Container.RegisterType<IMaterialClient, ConcreteMaterialClient>();
相关问题