我正在使用Unity Dependency Injection并且遇到了麻烦。我已经注册了我的接口和类:
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>();
}
}
答案 0 :(得分:0)
好的,经过一番搜索和创建其他项目后,我发现了发生了什么。只是一个愚蠢的错误。我的ServiceInjection类是在一个单独的DLL中。当我通过包管理器添加Unity DI时,它在主项目和Injection dll中添加了一个App_Start文件夹。我忘了从ServiceInjection dll中删除App_Start文件夹和内容。删除该文件夹后,所有文件都按原样运行。
答案 1 :(得分:0)
我知道这已经过时了,但万一有其他人遇到这个问题 - 当我添加服务和管理员(以及它们的接口)时我得到了同样的错误,但是我没有注册这些接口依赖注入配置。如果出现此错误,请确保检查新接口是否实际被注入!