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

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Méthode par défaut

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] Méthode par défaut

n°938977
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-01-2005 à 12:09:01  profilanswer
 

Imaginons un truc simple.
 
Je veux créer une class mettons "XMLSimpleTag", avec un constructeur prenant en paramètre le nom du tag et son contenu.
 
Ensuite, au lieu de faire un :
 
XMLSimpleTag monObj = new XMLSimpleTag("tag", "value" );
Console.Write(monObj.ToString());
 
=> "<tag>value</tag>"
 
Je veux pouvoir écrire simplement :
 
XMLSimpleTag monObj = new XMLSimpleTag("tag", "value" );
Console.Write(monObj);
 
Et obenir le même résultat.
 
Comment faire ?
 
Actuellement, j'ai fait un truc goret :
 
public string value
{
   get
   {
      return ...;
   }
}
 
Ca à l'air de compiler, mais à cause de références merdiques qui ne dépendent pas de moi, je ne peux pas aller jusqu'au bout de la compilation.

mood
Publicité
Posté le 06-01-2005 à 12:09:01  profilanswer
 

n°938981
FlorentG
Unité de Masse
Posté le 06-01-2005 à 12:10:02  profilanswer
 

Ben un appel à Console.Write(monObj); fait automatiquement appel à ToString, non ? :??: a vérifier...

n°938991
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-01-2005 à 12:14:55  profilanswer
 

Non, ça c'est parceque "ToString()" en interne est spécifié comme méthode par défaut. Et sur un objet perso, ça retourne le type de l'objet. Je sais pas si ça supporte la surcharge par contre. Mais dans tous les cas, je péfèrerais si possible avoir une propriété "à moi" par défaut, et non pas modifier celle de base du framework.


Message édité par Arjuna le 06-01-2005 à 12:15:03
n°938993
FlorentG
Unité de Masse
Posté le 06-01-2005 à 12:16:25  profilanswer
 

Ben si t'as juste besoin de ToString, laisse comme ça. Sinon, je sais pas si c'est possible :/ Pour une propriété c'est faisable, mais pour une méthode, je sais pas...

n°939062
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-01-2005 à 13:48:58  profilanswer
 

Et c'est comment pour la propriété ?

n°939067
FlorentG
Unité de Masse
Posté le 06-01-2005 à 13:54:42  profilanswer
 

En VB c'est comme ça, mais ça doit pas trop changer en écharpe :

Code :
  1. Default Public Property pouet(ByVal index As Integer) As Integer


Note qu'il faut un paramètre pour la propriété. Une propriété par défaut en fait sera utilisée comme ça :

Code :
  1. monObj(truc)


Au lieu de :

Code :
  1. monObj.maPropriete(truc)

n°949592
ToxicAveng​er
Posté le 09-01-2005 à 21:47:42  profilanswer
 

ben tu surcharges le ToString de ta classe pour qu'il t'affiche ce que tu veux.

n°949739
Arjuna
Aircraft Ident.: F-MBSD
Posté le 10-01-2005 à 02:06:32  profilanswer
 

C'est ce que j'ai fait, mais j'aurais préféré avoir un comportement comme ça :
 
XMLSimpleTag monTag;
 
monTag.tag = "toto";
monTag.value = "titi";
 
Console.Write(monTag);
 
=> "<toto>titi</toto>"
 
(avec une class héritée de String, ça aurait marché, sauf que je n'arrive pas à faire appeler par défaut ce "ToString()"
 
C'est pourtant bien le cas pour le type "int". Il ne nécessite pas de cast lorsqu'on l'appelle, preuve qu'une méthode par défaut est bien appelée, et que cette dernière à une surcharge pour un type en sortie "string". Du moins, c'est comme ça que j'interprète le fonctionnement de ce type.

n°949741
Arjuna
Aircraft Ident.: F-MBSD
Posté le 10-01-2005 à 02:10:23  profilanswer
 

En fait, d'ailleurs, je ne sais pas pourquoi je vous ai parlé de class "XMLTag". A la base, c'est un type "SQLString" que je veux faire, qui permette d'échapper automatiquement les quotes en vue de passer les données à une requête.
 
Comme ça, toutes mes fonctions contenant des traîtements SQL seraient comme ça :
 
public void doSomething(XMLString val)
{
   string sql;
   sql = "select * from latable where champ = " + val;
}
 
=> Du coup, je ne nuit pas à la lecture avec des ' et des Replace foutus dans tous les sens.

n°950914
ToxicAveng​er
Posté le 11-01-2005 à 16:54:51  profilanswer
 

implicit cast peut etre :??:

mood
Publicité
Posté le 11-01-2005 à 16:54:51  profilanswer
 

n°950964
Arjuna
Aircraft Ident.: F-MBSD
Posté le 11-01-2005 à 17:19:27  profilanswer
 

J'ai surchargé le ToString finalement...
Ca marche pas trop mal :
 

Code :
  1. SqlDataAdapter adapter = new SqlDataAdapter("select objNum, typObj, objNam, objXml, usrCre, usrMod, usrVal, dteCre, dteMod, dteVal, dteBeg, dteEnd, objSta, objOri, typOri, objPar, typPar, objPos, objHom from objGet(" + objNum.ToString() + ", " + (new sqlString(objTyp)) + " )", cnx);


 

Code :
  1. using System;
  2. namespace Cms.Components.DataAccess
  3. {
  4. /// <summary>
  5. /// Summary description for sqlString.
  6. /// </summary>
  7. public class sqlString
  8. {
  9.  private string Value;
  10.  public sqlString()
  11.  {
  12.  }
  13.  public sqlString(string initValue)
  14.  {
  15.   this.Value = initValue;
  16.  }
  17.  public override string ToString()
  18.  {
  19.   if (this.Value != null)
  20.    return "'" + this.Value.Replace("'", "''" ).Replace("%", "%%" ) + "'";
  21.   else
  22.    return "null";
  23.  }
  24. }
  25. public class sqlBool
  26. {
  27.  private string Value;
  28.  public sqlBool()
  29.  {
  30.  }
  31.  public sqlBool(string initValue)
  32.  {
  33.   this.Value = initValue;
  34.  }
  35.  public override string ToString()
  36.  {
  37.   if (this.Value == null)
  38.   {
  39.    return "null";
  40.   }
  41.   else if (this.Value == "False" )
  42.   {
  43.    return "0";
  44.   }
  45.   else
  46.   {
  47.    return "1";
  48.   }
  49.  }
  50. }
  51. }


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

  [C#] Méthode par défaut

 

Sujets relatifs
[IDL]Deux signatures pour une méthodeCFileDialog affichage icône miniatures défaut
Problème méthodeInvocation dynamique de méthode
Quelle methode choirir ?appel méthode c++ depuis c
Single Sign On et méthode POSTChanger la valeur par Défaut d'un CheckBox pour un visiteur !!
Quelle méthode utiliser pour la mise en page de mon site web ?Pb de récupération de champ d'un formulaire avec la méthode POST
Plus de sujets relatifs à : [C#] Méthode par défaut


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