Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2660 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C# 2] Héritage et spécialisation de méthodes template

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C# 2] Héritage et spécialisation de méthodes template

n°1385877
bb138
La vie est belle ...
Posté le 12-06-2006 à 16:13:37  profilanswer
 

Bonjour,
 
Je souhaite spécialiser des méthodes d'une classe de base dans des classes dérivées.
Voici ma classe de base :

Code :
  1. public class A
  2. {
  3.   virtual public void DefiniMaValeur<TypeVal>(TypeVal val)
  4.   {
  5.     throw new Exception("Pas implémentée" );
  6.   }
  7. }


Exemple de classe dérivée que je voudrais :

Code :
  1. public class B : A
  2. {
  3.   int _val;
  4.   public override void DefiniMaValeur<Boolean>(Boolean val)
  5.   {
  6.     _val = (val)?1:0;
  7.   }
  8.   public override void DefiniMaValeur<String>(String val)
  9.   {
  10.     _val = Int.Parse(val);
  11.   }
  12. }


Et ainsi je pourrais faire quelque chose comme ce qui suit :

Code :
  1. list<A> maListe = new list<A>();
  2. maListe.Add(new B());
  3. ...
  4. foreach (A in maListe)
  5. {
  6.   A.DefiniMaValeur<String>(maValeurStr);
  7. }


Sachant qu'il y aurait plusieurs classes dérivée de la classe A.
 
Merci de votre aide et de vos commentaires.


Message édité par bb138 le 12-06-2006 à 16:23:54
mood
Publicité
Posté le 12-06-2006 à 16:13:37  profilanswer
 

n°1385972
bb138
La vie est belle ...
Posté le 12-06-2006 à 17:59:09  profilanswer
 

N'insistez pas... je pense que ce n'est pas faisable...
Ce n'est pas faisable en C++ (à moins que je me trompe) alors je ne pense pas que cela puisse être le cas en C#.
 
Merci à vous tout de même !

n°1397785
tabouret e​n bois
Profil:s de pute
Posté le 30-06-2006 à 10:33:25  profilanswer
 

Tu fait un virtual qui prend un object dans ta classe de base
et apres quand tu overrides tu fais un switch case sur le type... [:sinclaire]
 

Code :
  1. public class A
  2. {
  3.   virtual public void DefiniMaValeur(object pVal)
  4.   {
  5.     throw new Exception("Pas implémentée" );
  6.   }
  7. }
  8. public class B : A
  9. {
  10.   int _val;
  11.   public override void DefiniMaValeur(object pVal)
  12.   {
  13.     switch(pVal.GetType())
  14.     {
  15.       case typeof(bool):
  16.         _val = (val)?1:0;
  17.         break;
  18.       case typeof(String):
  19.         _val = Int.Parse(val);
  20.         break;
  21.       default:
  22.         throw new Exception("Type pas supporté!" );
  23.         break;
  24.     }
  25.   }



---------------
██████████████████████████████████

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C# 2] Héritage et spécialisation de méthodes template

 

Sujets relatifs
[Appli Graph] Méthodes pour afficher du contenu au sein d'une fenêtreHeritage Fonction abstraite, Probleme conteneur Heterogene
Appeler un template dynamiquementtemplate
Template dreamweaver...Specialisation de template
variables externes : passage en membres ou argument de methodes ?requetes SQL: choix entre 2 methodes
Question sur l'héritage en C++ 
Plus de sujets relatifs à : [C# 2] Héritage et spécialisation de méthodes template


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR