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

Bob*_*orn 3 c# unity-container

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

    using (IMaterialClient rawMaterialServiceProxy =
ServerUtility.Container.Resolve<IMaterialClient>())
Run Code Online (Sandbox Code Playgroud)

错误:

依赖关系的解析失败...当前类型Xxx是一个接口,无法构造.你错过了类型映射吗?

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

Tru*_*ill 5

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

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


Cha*_*nga 5

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

ServerUtility.Container.RegisterType<IMaterialClient, ConcreteMaterialClient>();
Run Code Online (Sandbox Code Playgroud)