1
我有幾個實現相同接口的類。C#依賴注入投射問題
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是空白的接口,我用我的POCO類生成的T4和實體框架。
我可以發誓,這是工作,但我再次嘗試它和它的投擲的錯誤sayng:
Unable to cast object of type 'BLL.MyManagers.BidManager' to type 'BLL.BidManagers.IBidManager`1[Entities.IEntity]'.
當我刪除(IBidManager)視覺工作室告訴我一個明確的轉換不存在...但是嗎?
我不想創建BusinessManager類,像這樣的時候來定義類型:
public class BusinessManager<E> : ManagerBase where E : class, IEntity
{
IBidManager<E> _bidLogicManager;
而且,我不能創建在企業管理器需要,因爲這是一個IBidManager<E>
參數的函數是一個n層asp.net應用程序,我不想讓UI層知道任何有關IBidManager的信息。
我這樣做,看起來像它的工作!我想這隻需要3個字母來解決它大聲笑。謝謝! – 2010-07-01 01:14:23