IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Fonctionnement des Métaclasses


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Par défaut Fonctionnement des Métaclasses
    Bonjour,

    Je débute en ASP.net C#. Je souhaite utiliser les métaclasses afin de faciliter la programmation de mon site internet. Voici ce que je souhaite faire :

    Dans mon code, je souhaite créer une classe nommée Objet et des sous string nommés ID et Fonction. Lorsque je précise la valeur de ID à "new" je souhaite pouvoir préciser la valeur de "Fonction". Lorsque je préciser la valeur de ID à "12" par exemple je souhaite de "Fonction" renvoie une valeur calculée auparavant.

    Par Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Objet.ID="new";
    Objet.Fonction = "la valeur que je souhaite rentrer."
    dans ce cas, je souhaite écrire dans la variable Fonction;

    ou alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Objet.ID = "12";
    Response.Write(Objet.Fonction);
    dans ce cas, je souhaite "lire" la variable Fonction

    Voici le code de déclaration des classes que j'ai essayé de faire. Visiblement cela n'est pas correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
        public class Objet
        {
            public string ID { get; set; }
     
            public string Fonction()
            {
                if (ID != "new") return "Blabla";
                else
                {
                    // Ici je souhaite préciser moi meme la valeur de Fonction
                    get; set;
                }
            }
     
     
        }
    Désolé si ces explications sont peu précises, mais je ne cerne pas complètement le fonctionnement de ces métaclasses.

    Merci d'avance !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Par défaut
    Je n'est pas très bien compris ce que tu cherche à faire mais je vois déjà des erreurs de syntaxe il me semble :

    Proposition de correction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    public class Objet
    {
        public string ID { get; set; }
     
        public string Fonction
        {
            get
            {
                if (ID != "new") 
                    return "Blabla";
                else
                    return ID;
            }
            set
            {
                if (ID != "new")
                    ID = "Blabla";
                else
                    ID = value;
            }
        }
    }
    Tel que ID est déclaré tu peu considéré ID comme un attribut ayant un accès public.
    Par ailleurs fonction ne prends pas de () si tu utilise les mots clé get et set. Bon j'espère ne pas être a coté de la plaque.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Par défaut
    Super c'est exactement ça, merci ! Par contre j'ai un souci : voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            public string Fonction
            {
                get
                {
                    if (ID == "new") return Fonction;
                    else return "pas new";
                }
                set
                {
                    Fonction = value;
                }
            }
    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Vol.ID = "new";
     
            Response.Write(Vol.Fonction);
    Le problème c'est que si je ne précise pas la valeur de "Fonction" avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vol.Fonction = "blabla";
    il n'a aucune valeur à afficher pour "Fonction" donc le return Fonction bug :
    Une exception non gérée du type 'System.StackOverflowException' s'est produite dans App_Code.ooskvvjg.dll
    Comment faire ?

    Merci !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Par défaut
    En fait même quand je précise une valeur j'ai la même erreur :


  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Par défaut
    J'ai trouvé il faut en fait déclarer auparavant une autre variable que l'on utilise ensuite dans le code comme ici :

    http://msdn.microsoft.com/fr-fr/libr...03(VS.80).aspx

    Autre question :

    Est-il possible de pré-paramétrer les valeurs possibles pour un paramètre de la classe ? Par exemple, lorsque je tape Objet.Type : deux choix proposés "Nouveau" et "Ancien" automatiquement ?

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par FoxDeltaSierra
    Est-il possible de pré-paramétrer les valeurs possibles pour un paramètre de la classe ? Par exemple, lorsque je tape Objet.Type : deux choix proposés "Nouveau" et "Ancien" automatiquement ?
    Je te dirais de regarder du côté des énumérations à première vue.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Par défaut
    Comment est-ce que cela fonctionne ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonctionnement des comparateurs de prix ?
    Par masseur dans le forum Services
    Réponses: 3
    Dernier message: 22/01/2006, 21h11
  2. Fonctionnement des attributions de droits sur table et bdd ?
    Par shako95 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/11/2005, 13h39
  3. Fonctionnement des WeakHashMap
    Par seiryujay dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 03/10/2005, 14h12
  4. Fonctionnement des fichiers.
    Par phoenix440 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 29/05/2005, 15h36
  5. [langage] fonctionnement des Processus
    Par GMI3 dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2003, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo