Cast dans une classe générique [Résolu]

thiosyiasar 186 Messages postés lundi 11 mars 2002Date d'inscription 30 novembre 2010 Dernière intervention - 22 juil. 2008 à 12:13 - Dernière réponse : sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention
- 22 juil. 2008 à 14:18
Bonjour

J'ai un petit souci que je n'arrive pas a comprendre.

J'ai une classe statique générique (public static class Service<T> where T : Entity) et une classe Personne qui hérite de Entity.

Dans une méthode de la classe Service.Test(T entity),
il m'est impossible d'effectuer un cast pour effectuer une opération particulière pour certains type.

if (typeof(T).equals(typeof(Personne)))
{
  Personne p = (Personne)entity; // provoque une erreur de compilation 'Impossible de convertir T en Personne' alors que Personne hérite obligatoirement de Entity
}

Vous avez une idée ?

Merci

Nico
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 22 juil. 2008 à 12:31
3
Merci
Hello,

Tu peux peut-être essayer avec le mot clef as :

Personne p = entity as Personne;
if (p!= null){
...
}

Par contre, ce genre de chose ne me parait pas forcément génial pour une classe générique.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Merci SharpMao 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de SharpMao
thiosyiasar 186 Messages postés lundi 11 mars 2002Date d'inscription 30 novembre 2010 Dernière intervention - 22 juil. 2008 à 12:41
0
Merci
Merci pour la rapidité de la réponse.
Effectivement cela fonctionne avec 'as'...

En fait c'est une classe générique qui gère la persistance des entités. J'ai besoin pour certains objet d'effectuer des vérifications spécifiques d'ou le besoin de faire un cast.

J'avais la solution de créer un service par entité mais le coté générique permet d'ecrire qu'une classe, et d'y inclure quelques rares cas particuliers suivant le type d'entité.

Par contre, je suis ouvert, si tu as une solutions qui te parait plus propre, ca m'intéresse

Nico
Commenter la réponse de thiosyiasar
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 22 juil. 2008 à 14:18
0
Merci
si pour certains types tu as besoin d'un traitement particulier, je te conseille de les regrouper avec une interface. Tu pourras ainsi les reconnaitre plus facilement.

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.