J'ai plusieurs classes qui implémentent la même interface.Casting d'injection de dépendance C# Problème
interface IBidManager<E> where E : IEntity
public class BidManager : IBidManager<EntityObject1>
public class BidManager2 : IBidManager<EntityObject2>
public class BidManager3 : IBidManager<EntityObject3>
Dans ma classe de chef d'entreprise je:
public class BusinessManager : ManagerBase
{
private IBidManager<IEntity> _bidLogicManager;
...
Dans BusinessManager est une fonction que j'appelle à changer le _bidLogicManager (MyType est un ENUM)
public void SetLogic(MyType auctionType)
{
switch (MyType)
{
case AuctionType.Classic:
_bidLogicManager = (IBidManager<IEntity>)new BidManager();
break;
...
IEntity est un interface vide que j'utilise avec mes classes POCO générées par un t4 et le framework Entity.
je aurais pu juraient ce fonctionnait, mais je l'ai essayé à nouveau et son erreur de lancer sayng:
Unable to cast object of type 'BLL.MyManagers.BidManager' to type 'BLL.BidManagers.IBidManager`1[Entities.IEntity]'.
Lorsque je retire (IBidManager) visual studio me dit qu'il existe une conversion explicite ... mais ce est-ce?
Je ne veux pas définir le type lors de la création de la classe BusinessManager comme ceci:
public class BusinessManager<E> : ManagerBase where E : class, IEntity
{
IBidManager<E> _bidLogicManager;
Aussi, je ne peut pas créer une fonction dans le chef d'entreprise qui prend un argument IBidManager<E>
puisque c'est une couche n application asp.net et je ne veux pas que la couche UI sache rien sur le IBidManager
Oui, ça a fonctionné! Je pensais que cela prendrait seulement 3 lettres pour le résoudre lol. Merci! –