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 :

Surdefinition d'une fonction


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut Surdefinition d'une fonction
    Salut

    j'ai une fonction que je veux appelle avec differents type de donnée ... mais le traitement est toujours le meme ...

    Est il possible d'ecrire la fonction UNE SEUL FOIS ?

    thx @+

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    Ce que tu veux faire est possible grâce à la généricité. Avec la nouvelle version de .NET, c'est possible facilement.

    Sinon, faut utiliser la classe Object et récupérer la vraie classe de l'objet dynamiquement

  3. #3
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    merci

    comment fait on pour récupérer la vraie classe de l'objet ?
    C'est a dire comment fait on un cast dynamiquement ?

  4. #4
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Salut

    j'ai fais un debut de classe...qu'en pensez vous ?

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    internal abstract class DB_Objet
        {
            private ADOX.DataTypeEnum _type;
            private bool _primary_key;
            private int _size;
            private String _name;
            private bool _nullable;
     
            public override String ToString()
            {
                String aPrimaryKey = "\t \t";
                String aNullable = "";
                if (this._primary_key) aPrimaryKey = "\tX\t";
                if (this._nullable) aNullable = "Nullable";
     
                return aPrimaryKey + " " + this._name + "\t\t\t\t\t\t\t\t\t" + this._type.ToString() + "\t" + this._size + "\t\t\t\t\t\t" + aNullable;
            }
     
            public DB_Objet(ADOX.DataTypeEnum theType, int theSize, bool thePrimaryKey)
            {
                this._type = theType;
                this._primary_key = false;
                this._size = theSize;
                this._name = "";
                this._nullable = true;
                this._primary_key = thePrimaryKey;
            }
     
            public bool PrimaryKey
            {
                get { return this._primary_key; }
            }
     
            public String Name
            {
                set { this._name = this.CheckStrName(value); }
                get { return this._name; }
            }
     
            protected String CheckStrName(String theStr)
            {
                String aNewStr = theStr.Trim();
     
                aNewStr = aNewStr.Replace(".", "");
                aNewStr = aNewStr.Replace("!", "");
                aNewStr = aNewStr.Replace("[", "");
                aNewStr = aNewStr.Replace("]", "");
     
                if (aNewStr.Length > 64) aNewStr = aNewStr.Substring(0, 64);        
     
                return aNewStr;
            }
     
            private String CheckStrValue(String theValue)
            {
                String aNewStr = theStr.Trim();
     
                aNewStr = aNewStr.Replace("'", "''");
                aNewStr = aNewStr.Replace("\"", "\"\"");
     
                return aNewStr;
            }
     
            public int Size
            {
                protected set { this._size = value; }
                get { return this._size; }
            }
     
            public bool Nullable
            {
                protected set { this._nullable = value; }
                get { return this._nullable; }
            }
     
            public override int GetHashCode()
            {
                return this._name.ToLowerInvariant().GetHashCode();
            }
     
            public override bool Equals(object obj)
            {
                DB_Objet t = obj as DB_Objet;
                return t._name == this._name;
            }
        }
    et voici un exemple d'objet qui en derive :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
        class DB_Binary : DB_Objet
        {
            private String _value;
     
            public DB_Binary(String theName)
                : base(DataTypeEnum.adBinary, 64, false)
            {
                base.Name = theName;
                this._value = null;
            }
     
            public String Value
            {
                set { this._value = value; }
                get { return this._value; }
            }
     
            public new int Size { set { base.Size = value; } }
            public new bool Nullable { set { base.Nullable = value; }}
        }
     
        class DB_Boolean : DB_Objet
        {
            private bool _value;
     
            public DB_Boolean(String theName)
                : base(DataTypeEnum.adBoolean, 4, false)
            {
                base.Name = theName;
                this._value = true;
            }
     
            public DB_Boolean(String theName, bool thePrimaryKey)
                : base(DataTypeEnum.adBoolean, 4, thePrimaryKey)
            {
                base.Name = theName;
                this._value = true;
            }
     
            public bool Value
            {
                set { this._value = value; }
                get { return this._value; }
            }
     
            public new bool Nullable { set { base.Nullable = value; } }
        }

    thx @+

  5. #5
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    En fait je cherche un avis sur la facon dont j'ai structure les classes entres elles ....

  6. #6
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    c'est koi ce new de m... ! Utilise virtual / override pour faire cela !
    En effet, si je comprends bien, tu ne veux pas qu'on puisse affecter la propriété Nullable dans une instance de DB_Objet mais tu ne peux pas avoir d'instance de DB_Objet car elle est abstract !

Discussions similaires

  1. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24
  2. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48
  3. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22
  4. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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