【发布时间】:2016-07-07 14:39:43
【问题描述】:
我正在使用 Unity 依赖注入,但遇到了麻烦。我已经像这样注册了我的接口和类:
container.RegisterType<IUserService, UserService>();
容器是一个 IUnityContainer。
在我的控制器中,我有一个构造函数设置来接收 IUserService 参数,如下所示:
private readonly IUserService _service;
public DependencyController(IUserService service)
{
_service = service;
}
当页面上指向此控制器索引的链接被点击时,我收到以下错误:
“当前类型 Converge.Service.Interfaces.IUserService 是一个接口,无法构造。您是否缺少类型映射?”。不知道我可能会错过什么。任何帮助是极大的赞赏?如果您需要更多信息,请告诉我。
更新 这是 UnityConfig 类
public class UnityConfig
{
private static readonly Lazy<IUnityContainer> Container = new Lazy<IUnityContainer>(() =>
{
var container = new UnityContainer();
RegisterTypes(container);
return container;
});
public static IUnityContainer GetConfiguredContainer()
{
return Container.Value;
}
private static void RegisterTypes(IUnityContainer container)
{
new ServiceInjection()
.Inject(container);
}
}
public class ServiceInjection
{
public void Inject(IUnityContainer container)
{
container.RegisterType<IUserService, UserService>();
}
}
【问题讨论】:
-
请显示您的组合根目录中的代码(将容器绑定到 MVC 的启动代码)。
-
你确定,方法
Inject被调用了吗?看起来你的容器注册代码没有执行 -
是的,它被调用了。踏入其中。
标签: asp.net-mvc unity-container