在我的ASP.net MVC应用程序中,我不断得到这个间歇性的黄色死亡屏幕(YSOD),错误是:
当前类型x是一个接口,无法构造。你错过了类型映射吗?
我知道它与Unity IoC有关,但我不确定究竟是什么。我的接口/类遵循明确定义的模式:
ISupplierService 将由 SupplierService 等实施。
UnityConfig.cs
文件包含以下内容:
public static class UnityConfig
{
public static void RegisterComponents()
{
var container = new UnityContainer();
container.RegisterTypes(AllClasses.FromLoadedAssemblies(), WithMappings.FromMatchingInterface, WithName.Default);
container.RegisterType<AccountController>(new InjectionConstructor());
container.RegisterType<ManageController>(new InjectionConstructor());
container.RegisterType(typeof(IRepository<>), typeof(GenericRepository<>));
container.RegisterType<DbContext, PdContext>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
}
在我的SupplierController.cs
中,我有以下构造函数:
public class SupplierController : BaseController
{
private readonly ISupplierService _supplierService;
public SupplierController(ISupplierService supplierService)
{
if (supplierService == null)
{
throw new ArgumentNullException(nameof(supplierService));
}
_supplierService = supplierService;
}
}
答案 0 :(得分:0)
我现在看到了问题。
您的实现类SupplierService
没有实现接口ISupplierService
。
您可以将ISupplierService
添加到类声明中,或让BaseController实现ISupplierService
。
public class SupplierController : BaseController, IServiceSupplier
{
//.
//.
//.
}
一段时间后回到项目中,我刚刚意识到了同样的错误...:)