J'ai plusieurs classes qui mettent en œuvre la même interface.
interface IBidManager<E> where E : IEntity
public class BidManager : IBidManager<EntityObject1>
public class BidManager2 : IBidManager<EntityObject2>
public class BidManager3 : IBidManager<EntityObject3>
Dans mon cours de gestion d'entreprise, j'ai :
public class BusinessManager : ManagerBase
{
private IBidManager<IEntity> _bidLogicManager;
...
Dans le BusinessManager, il y a une fonction que j'appelle pour 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 une interface vide que j'utilise avec mes classes POCO générées par un t4 et le framework Entity.
J'aurais pu jurer que ça marchait, mais j'ai réessayé et il y a une erreur qui dit :
Unable to cast object of type 'BLL.MyManagers.BidManager' to type 'BLL.BidManagers.IBidManager`1[Entities.IEntity]'.
Lorsque je supprime (IBidManager), Visual Studio me dit qu'une conversion explicite existe... mais de quoi s'agit-il ?
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;
De plus, je ne peux pas créer une fonction dans le gestionnaire d'entreprise qui prend un fichier de type IBidManager<E>
étant donné qu'il s'agit d'une application asp.net à n couches et que je ne veux pas que la couche UI sache quoi que ce soit sur l'IBidManager.