繁体   English   中英

Unity IoC引发无效的强制转换异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM