[英]Troubleshooting Unity IoC container exception (“The given assembly name or codebase was invalid”)
[英]Unity IoC throws invalid cast exception
我正在尝试通过Unity IoC注册通用接口/实现,但是ViewModel中的构造函数参数抛出了无效的强制转换异常,我无法弄清原因。
我有一个接口,所有模型都可以实现:
public interface IEntity {}
典型模型如下所示:
public class Dashboard: IEntity { .... }
我有一个数据库服务,它可以是任何模型类型,以及一个关联的接口,例如:
public interface IDbService<T> where T: IEntity { .... }
public class DbService<T> where T : IEntity, IDbService<T> { .... }
容器注册如下所示:
container.RegisterType(typeof(IDbService<>), typeof(DbService<>));
到现在为止。
但是,当我尝试将其加载到ViewModel类中时,在DashboardPageViewModel中,出于参数考虑,我得到了一个无效的强制转换异常,即构造函数上的实现,如下所示:
private readonly IDbService<Dashboard> _dbService;
public DashboardPageViewModel(IDbService<Dashboard> dbService)
{
_dbService = dbService;
}
这引发异常。
为什么我不能在这方面投放资讯主页? 在注册类型后尝试解析类型转换,也不起作用。
该类定义不正确。
在
public class DbService<T> where T : IEntity, IDbService<T> { .... }
DbService<T>
仅具有类型约束,其中T
衍生自IEntity
以及IDbService<T>
您需要具有从IDbService<T>
接口派生的类,然后应用通用类型约束。
public interface IDbService<T> where T: IEntity { .... }
public class DbService<T> : IDbService<T> where T : IEntity { .... }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.