begin process at 2012 02 09 11:01:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Autre

 > 

Parsing dans un classe générique ???


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Parsing dans un classe générique ???

mardi 23 janvier 2007 à 11:17:48 | Parsing dans un classe générique ???

YOOP

Bonjour tout le monde,

J'ai un soucis concernant une classe générique. (c'est mon premier test avec ce genre de classe).

Voici :

public class Paramètre<TypeValue>
    {
private TypeValue _Value;
  public TypeValue Value
        {
            get { return _Value; }
            set {  _Value = value;  }
        }
     public bool Save_Value(object o)
        {
            int i;
           if(this.Value is int)
            {
               
                bool r = int.TryParse((string)o, out i);              
                this._Value = i; <=ERREUR de compilation.
                return r;
            }
        }
}

Donc mon problème est que la nouvelle valeur a sauvegarder dans la propriété de ma classe générique vient de d'un textbox. Donc je dois la parser... puis la sauvegarder...
Mais je n'arrive pas a trouver une solution...

Quelqu'un aurait-il une idée ou une solution????

Merci d'avance pour l'aide

YOOP,
mardi 23 janvier 2007 à 11:49:34 | Re : Parsing dans un classe générique ???

Bidou

Administrateur CodeS-SourceS
Salut,

Première chose: oublies les accents dans le nom des classes !!!!!!!!!!
Ensuite, je crois que tu n'as pas bien saisi comment fonctionne une class générique: le but, c'est justement que les méthodes ne prennent plus des object en paramètres mais des Type T !
Pour l'erreur, c'est parce que tu assignes un type int à un TypeValue (pas de conversion implicite possible)




-Blog-
mardi 23 janvier 2007 à 12:01:43 | Re : Parsing dans un classe générique ???

YOOP

Re,

En effet, que de bonnes remarques.

Promis, je retire les accents.
Ensuite, je reprend conscience que ce type de classe est la pour ne plus utiliser les objects.
Mais, il me reste le problème suivant :

J'ai une string d'un composant visuelle Ctrl_parametre<Type_value> qui est associé à mon object Parametre.
Je veux récuperer la valeur de ce composant visuel qui est une string pour l'enregistrer dans la propriété de mon object paramètre.

Comment faire vu que je ne connais pas a l'avance le type de mon object parametre...

Donc en bref comment faire : Type_value variable = Parse(string)??? dans une classe : classe maclasse<Type_value>.


Merci d'avance.



mardi 23 janvier 2007 à 15:32:44 | Re : Parsing dans un classe générique ???

Bidou

Administrateur CodeS-SourceS
Euh, j'ai pas bien compris...





-Blog-
mardi 23 janvier 2007 à 16:01:36 | Re : Parsing dans un classe générique ???

YOOP

Re,

Je vais tenter de clarifier la chose.

J'ai deux classe.
- Parametre<Type_Value>               // Générique : contient les data dont Value
- Parametre_ctrl<Type_Value>            // Un controle (visuel) utilisateur destiné destiné a afficher certaines variables de Parametre

Par le biais de Parametre_ctrl je veux modifier une valeur de Parametre.
La modification de la valeur se fait par le biais d'un textbox. Cette modification doit êre enregistrer dans l'object Parametre lié au controle (Parametre_ctrl).

Le problème est que je me retrouve avec une string (du textebox) que je dois caster en Type_Value de Parametre.
Or je ne connais pas a l'avance le type de Type_Value.

J'ai trouver une roue de secour du type : (bien que le but est de ne plus utiliser des objects)
if(this.Parametre.Value isint)
{
object o0 = int.Parse(this.Txt_Value.Text);
this._parametre.Value = (TypeValue)o0;
}
if (this.Parametre.Value isfloat)
{
object o0 = float.Parse(this.Txt_Value.Text);
this._parametre.Value = (TypeValue)o0;
}
if (this.Parametre.Value isbyte)
{
object o0 = byte.Parse(this.Txt_Value.Text);
this._parametre.Value = (TypeValue)o0;
}

Remarque que ce code vient de la classe Parametre_ctrl et que ce composant possède la référence de Parametre<Type_Value>

Voila,

En espérant avoir clarifier mon problème.

Merci pour le temps consacré a mon problème.

YOOP


mercredi 24 janvier 2007 à 13:48:15 | Re : Parsing dans un classe générique ???

Bidou

Administrateur CodeS-SourceS
Réponse acceptée !
Alors j'ai rapidement regardé le code que tu m'as envoyé et à mon avis tu as un problème de conception :
Une classe generic permet d'être construite avec un certain type, par exemple

List<string> s = new List<string>();

Tu remarques qu'une fois initialisé, tu ne peux plus changer le type de cette classe, ce qui est logique, car le contenu est de type String, on ne peut pas tout d'un coup y mettre un object "Arbre".
Si tu regardes les méthodes/property de l'object 's' ci-dessus, tu constates qu'il n'y a que des méthodes GENERIQUES qui n'ont rien avoir avec son type! Par exemple, une méthode Add, Remove, etc. A aucun moment on accède directement à l'object: logique, puisqu'on ne connait pas son type et qu'à priori ça peut être n'importe quoi!

Qui dit type générique implique fonctions génériques. Tu ne peux pas par exemple ajouter une méthode qui s'appelle GetNombreDePattes à ton object car si je met un object de type Radio [MonObject<Radio> radio = new MonObject<Radio>()] dans la collection, la méthode n'a plus aucun sens!!

Pour terminer, tu peux tout de même spécifier avec la clause (le mot clef) where que ton object generic doit implémenter une certaine interface ou dérivée d'une certaine classe : Ca te permet d'appeler des méthodes plus précise de l'object, càd:

    public class Radio<T> where T : Vivant
    {
    }

Maintenant tu peux faire une méthode GetNombreDePatte car tu peux t'assurer que T sera un être vivant et que donc il aura des pattes
J'espère que c'est un peu plus clair...


-Blog-


Cette discussion est classée dans : public, int, classe, value, générique


Répondre à ce message

Sujets en rapport avec ce message

Problème d'héritage [ par fregolo52 ] Bonjour,Je coince un peu dans mes déclarations.J'ai un objet générique dont dérive mes classe :Cette classe implémente l'interface IXmlSerializablepub utilisation des variables d'une classe [ par ggrug26 ] bonjour a tous,je débute dans le monde du C#, et je rencontre quelques difficultés, mes bases de C++ doivent être rouiller:j'ai créer une classe avec Récupérer un paramètre d'une classe mère [ par therainbow3 ] Bonjour, J'ai créé une classe mère de cette forme:public class Page    {        protected ArrayList textes;        protected ArrayList images;        passer des événements en paramètre [ par mathmax ] Bonjour,j'ai une classe qui doit réagir à un certains nombre d'événements d'un certain type. J'aimerais que l'utilisateur de la classe puisse ajouter Est ce possible ??? [ par arouche ] Bonjour,Je debute en C# et je voudrais savoir s'il est possible de faire la chose suivante :Imaginons le scenario suivant :    2 tables dans la base d Xml et ma librairie Excel [ par kooroza ] Bonjour,Je veux lire et modifier un fichier XML qui a à peu près la forme suivante.       A1    H Tutoriel classes et programmation objet [ par olibara ] Bonjour Je developpe depuis qq semaine en Csharp et je trouve ce langauage tres agréable et puissant. Je pense maitriser déja pas mal de choses Cepe Heritage et Constructeur [ par codefalse ] Bonjour à tous :)Voila, nouveau en C# je suis bloqué sur un problème d'héritage.J'ai une classe mère abstraite, AbsClass, qui contient un constructeur Pointeurs... Encore et toujours... [ par darknoon29 ] Nous avons toujours quelques difficultés, voilà ce qu'on a écrit:          [DllImport("ordonantsdll.dll")] public static extern System.IntPtr Faire un dispose de mon propre composant [ par fcolo ] Bonjour,j'ai réalisé un composant personnel.Ce composant ne dérive pas de Form.J'ai créer une classe vide pour le faire.Ce composant se connecte à une


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,725 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales