J'ai 3 classes: A, B et CC# Dépendance problème d'injection
Toutes ces classes implémentent une interface IMyInterface
Je voudrais l'interface à définir comme ceci:
internal IMyInterface<E> where E: class
{
E returnData();
}
Pour pouvoir retourner des données de type E. Le type "E" sera un objet POCO créé avec Entity Framework v4.
Dans une classe séparée J'ai:
public class MyClass()
{
IMyInterface<??> businessLogic;
public setBusinessLogic(IMyInterface<E> myObject)
where E : class
{
businessLogic = myObject;
}
}
J'ai essayé de mettre en place <object>
de <??>
mais il ne pouvait pas jeter mon type d'entité poco.
J'ai essayé avec mes entités à mettre en œuvre une interface vide IEntity
puis en utilisant
IMyInterface<IEntity> businessLogic;
...
businessLogic = new A<POCOObject>();
résultats dans:
Cannot implicitly convert type
'A<POCOObject>' to
'IMyInterface<IEntity>'. An explicit
conversion exists (are you missing a
cast?)
Toutes les recommandations?
Edit: J'ai essayé de déclarer mes A, B et C comme des classes:
internal class A : IBidManager<EntityObjectType>
et
internal class A<E> : IBidManager<E> where E : class
résultats dans la même erreur.
Hrmm initialement cela fonctionnait quand je viens de faire IBidManager businessLogic; alors fait businessLogic = (IBidManager ) new A(); .... mais pour une raison quelconque, il ne fonctionne plus ... –
Bien que les solutions ci-dessus fonctionnent, je ne peux pas les faire de cette façon. Dans le premier exemple, vous utilisez dans la définition de classe. Notre système n'est pas configuré pour fonctionner de cette façon. Je veux créer une classe, puis appeler une fonction pour modifier l'objet IMyInterface pour référencer autre chose. Dans le second exemple ce n'est pas dynamique, le POCOObject est différent pour A, B et C –
Il me dit qu'une conversion explicite existe ... hrmm –