Unity - 当前类型是接口,无法构造。您是否缺少类型映射?
Unity -The current type is an interface and cannot be constructed. Are you missing a type mapping?
我正在使用 Unity 依赖注入,但遇到了问题。我已经像这样注册了我的接口和 classes:
container.RegisterType<IUserService, UserService>();
其中容器是 IUnityContainer。
在我的控制器中,我有一个构造函数设置来接收 IUserService 参数,如下所示:
private readonly IUserService _service;
public DependencyController(IUserService service)
{
_service = service;
}
当指向该控制器索引的页面上的 link 被点击时,出现以下错误:
"The current type, Converge.Service.Interfaces.IUserService, is an interface and cannot be constructed. Are you missing a type mapping?"。不确定我可能会遗漏什么。任何帮助是极大的赞赏?如果您需要更多信息,请告诉我。
更新
这是 UnityConfig class
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>();
}
}
好的,经过一些搜索和创建其他项目后,我明白了发生了什么。只是一个愚蠢的错误。我的 ServiceInjection class 在一个单独的 dll 中。当我通过包管理器添加 Unity DI 时,它在主项目和注入 dll 中添加了一个 App_Start 文件夹。我忘记从 ServiceInjection dll 中删除 App_Start 文件夹和内容。删除该文件夹后,一切正常。
我知道这是旧的,但以防万一其他人遇到这个——我在添加服务和管理器(以及它们的接口)时遇到了同样的错误,但没有在我的中注册这些接口依赖注入配置。如果您收到此错误,请务必检查您的新接口是否确实被注入了!
我正在使用 Unity 依赖注入,但遇到了问题。我已经像这样注册了我的接口和 classes:
container.RegisterType<IUserService, UserService>();
其中容器是 IUnityContainer。
在我的控制器中,我有一个构造函数设置来接收 IUserService 参数,如下所示:
private readonly IUserService _service;
public DependencyController(IUserService service)
{
_service = service;
}
当指向该控制器索引的页面上的 link 被点击时,出现以下错误:
"The current type, Converge.Service.Interfaces.IUserService, is an interface and cannot be constructed. Are you missing a type mapping?"。不确定我可能会遗漏什么。任何帮助是极大的赞赏?如果您需要更多信息,请告诉我。
更新 这是 UnityConfig class
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>();
}
}
好的,经过一些搜索和创建其他项目后,我明白了发生了什么。只是一个愚蠢的错误。我的 ServiceInjection class 在一个单独的 dll 中。当我通过包管理器添加 Unity DI 时,它在主项目和注入 dll 中添加了一个 App_Start 文件夹。我忘记从 ServiceInjection dll 中删除 App_Start 文件夹和内容。删除该文件夹后,一切正常。
我知道这是旧的,但以防万一其他人遇到这个——我在添加服务和管理器(以及它们的接口)时遇到了同样的错误,但没有在我的中注册这些接口依赖注入配置。如果您收到此错误,请务必检查您的新接口是否确实被注入了!