我有几个实现相同接口的类。
interface IBidManager<E> where E : IEntity
public class BidManager : IBidManager<EntityObject1>
public class BidManager2 : IBidManager<EntityObject2>
public class BidManager3 : IBidManager<EntityObject3>
在我的商务经理班上,我有:
public class BusinessManager : ManagerBase
{
private IBidManager<IEntity> _bidLogicManager;
...
在businessManager中是一个函数,我调用它来更改BidLogicManager(myType是一个枚举)
public void SetLogic(MyType auctionType)
{
switch (MyType)
{
case AuctionType.Classic:
_bidLogicManager = (IBidManager<IEntity>)new BidManager();
break;
...
IEntity是一个空白的接口,我使用T4和实体框架生成的POCO类。
我本可以发誓这是有效的,但我又试了一次,它抛出的错误是:
Unable to cast object of type 'BLL.MyManagers.BidManager' to type 'BLL.BidManagers.IBidManager`1[Entities.IEntity]'.
当我删除(ibidManager)时,Visual Studio会告诉我存在显式转换…但是它是什么呢?
我不想在创建BusinessManager类时这样定义类型:
public class BusinessManager<E> : ManagerBase where E : class, IEntity
{
IBidManager<E> _bidLogicManager;
此外,我不能在业务经理中创建
IBidManager<E>
参数,因为这是一个n层的ASP.NET应用程序,我不希望UI层知道任何关于ibidManager的信息。