[RESOLU] Mettre un Objet comme attribut d'un autre Objet

Mettre un Objet comme attribut d'un autre Objet [RESOLU] - C#/.NET managed - Programmation

Marsh Posté le 23-06-2006 à 19:38:05    

Bonjour, j'ai encore besoin d'une petite aide en c#  :whistle:  
J'ai une classe cBareme et j'aimerai lui donner comme attribut un cModeCalcu qui contient 2 attibut iTypeAssiette et fTva.
Le problème est que je n'arrive pas à attribuer des valeurs aux attribut de cModeCalcul.
Un peu de code pour expliquer  :D  
 
Mon cBareme :  

Code :
  1. public cModeCalcul ModeCalcul
  2. {
  3.    get{ return new cModeCalcul(); }
  4.    set{ ??????????????? }
  5. }


et mon cModeCalcul

Code :
  1. public class cModeCalcul
  2. {
  3.    private int iTypeAssiette;
  4.    private float fTva;
  5. }
  6. public int ipTypeAssiette
  7. {
  8.     get { return iTypeAssiette; }
  9.     set { iTypeAssiette = value; }
  10. }
  11. public float fpTva
  12. {
  13.     get { return fTva; }
  14.     set { fTva = value; }
  15. }


 
et j'aimerais faire des choses du genre :  

Code :
  1. cBareme bareme = new cBareme();
  2. bareme.cModeCalcul.fpTva = fTva;
  3. bareme.cModeCalcul.ipTypeAssiette = iIdTas;


 
Merci pour votre aide.


Message édité par Jinroh le 27-06-2006 à 14:26:14

---------------
Galerie photos
Reply

Marsh Posté le 23-06-2006 à 19:38:05   

Reply

Marsh Posté le 24-06-2006 à 12:40:32    

Bah Y'a aucun soucis, ta propriéte pour l'attribut cModeCalcul dans cBareme retourne tout simplement son attribut cModeCalcul, non ? Montre le code de ta classe cBareme

Reply

Marsh Posté le 25-06-2006 à 11:20:11    

Le problème est que ça me renvoi un cModeCalcul vide et que je ne peux pas faire de set dessus :(


---------------
Galerie photos
Reply

Marsh Posté le 25-06-2006 à 13:22:04    

Le code de la classe cBareme stp ...
Le cModeCalcul vide c'est peut être que tu as oublié une étape dans le constructeur de de cBareme.
Quelle est la visibilité du cModeCalcul dans cBareme?

Reply

Marsh Posté le 26-06-2006 à 09:34:00    

Voila pour mon barème

Code :
  1. class cBareme
  2. {
  3.      private int iId;
  4.      private string sIntitule;
  5.      private int iBranche;
  6.      public cModeCalcul ModeCalcul
  7.         {
  8.             get{ return new cModeCalcul(); }
  9.             set  { ????? }
  10.         }
  11. et une méthode :
  12. public void RemplitBaremeById(int iIdBareme)
  13.         {
  14.             this.ipId = iIdBareme;
  15.             this.spIntitule = GetIntitule();
  16.            
  17.             clRequete Requete = new clRequete("Select * from XC_TC where ID_CGP = " + this.ipId);
  18.             SqlDataReader reader = Requete.QueryRequete();
  19.             int iIdTas, iIdTcal, iIdTc;
  20.             float fTva;
  21.             GetTasTcalTvaTc(reader, out iIdTas, out iIdTcal, out iIdTc, out fTva);
  22.             this.ipBranche = GetBrancheRef();
  23.             this.ipIdTc = iIdTc;
  24.             this.fpMinAppel = GetMinAppel();
  25.             this.fpMaxAppel = GetMaxAppel();
  26.             this.ModeCalcul.fpTva = fTva;
  27.             this.ModeCalcul.ipTypeAssiette = iIdTas;
  28.             this.ModeCalcul.cTypeCalcul.ipIdTypeCalcul = iIdTcal;
  29.             reader.Close();


 
Ce qui est bizarre est que pendant cette ligne : this.ModeCalcul.fpTva = fTva; il va chercher dans le  

Code :
  1. public cModeCalcul ModeCalcul
  2.         {
  3.             get{ return new cModeCalcul(); }


et non dans le set{ }
 
Merci pour ton aide


---------------
Galerie photos
Reply

Marsh Posté le 27-06-2006 à 12:07:58    

Jinroh a écrit :

Voila pour mon barème

 


 


Ce qui est bizarre est que pendant cette ligne : this.ModeCalcul.fpTva = fTva; il va chercher dans le

 


Code :
  1. public cModeCalcul ModeCalcul
  2. {
  3. get{ return new cModeCalcul(); }

 

et non dans le set{ }

 

Merci pour ton aide

 

------------------------FIN DU QUOTE                           --------------------
------------------------AU SECOURS LES QUOTES §§§§§§ -----------

 

c'est normal.
qd tu fais un this.ModCalcul, tu lui dis d'aller chercher cet objet, et "ensuite" de fixer la proprieté, donc il passe par l'accesseur (vu que ton objet n'est pas instancié)

 

tu devrais faire :
MonModCalcul = new ModeCalcul();
pubcModeCalcul = MonModCalcul

 

avec les modifs suivantes :

 


Code :
  1. private ModeCalcul _cModeCalcul ;
  2. public pubcModeCalcul ModeCalcul
  3. {
  4. get{ return _cModeCalcul;}
 

set { _cModeCalcul = value }

 

}

 

...

  

Ensuite, dans ta classe, tu travailleras avec pubcModeCalcul.fpa....

 

Si tu mets un new dans ton get, tu vas toujours créer des objets.
J'espere être compréhensible

Message cité 1 fois
Message édité par alien_nan le 27-06-2006 à 12:09:16
Reply

Marsh Posté le 27-06-2006 à 14:25:50    


Ok parfait !
Je crée d'abord mon ModeCalcul, je lui donne tout ce que je veux et après je le redonne à mon bareme.
Ca fonctionne parfaitement.
 
Merci  :jap:


---------------
Galerie photos
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed