Boujour,
J'ai un fournisseur de service d'accès aux données.
Je lui passe un type d'entité et lui me retourne le service correspondant.
Chaque service implémente une interface générique en définissant le type d'entité géré
Le code fournit compile mais il ' y un pb de cast à l'exécution, ce qui m'étonne à moitié.
Avez-vous des solutions ?
Sachant que les services doivent restés typés pour le type d'entité.
Et que j'ai besoin d'un méthode qui me fournit le service a partir d'un type d'entité
//// CODE A EXECUTER
//// CODE A EXECUTER //////////////////////////////
static class Program
{
[STAThread]
static void Main()
{
// Création de l'entité
User oUser = new User();
// Sélection du service d'accès aux données
IEntityService<Entity> oService = ServiceProvider.GetService(oUser.GetType());
// Utiliastion du service pour enregistrer
oService.Save(User);
}
}
//// DEFINITION DES ENTITES ///
public abstract class Entity
{
public long Id = 0;
}
public class Content : Entity { }
public class User : Entity { }
//// DEFINITION DES SERVICES ///
public interface IEntityService<TEntity> where TEntity : Entity
{
void Save(TEntity entity);
}
public class ContentService : IEntityService<Content>
{
public void Save(Content entity) { }
}
public class UserService : IEntityService<User>
{
public void Save(User entity) { }
}
//// DEFINITION DU FOURNISSEUR DE SERVICE ///
public static class ServiceProvider
{
public static IEntityService<Entity> GetService(Type type)
{
if (type.Equals(typeof(Content)))
return (IEntityService<Entity>)new ContentService();
else if (type.Equals(typeof(User)))
return (IEntityService<Entity>)new UserService();
else
return null;
}
}
Merci,
Nico