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

VB.NET Discussion :

Héritage avec system.timespan


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 110
    Par défaut Héritage avec system.timespan
    Bonjour,

    j'ai une classe et je souhaiterais que celle ci hérite des memes propriétes que

    system.timespan... mais je suis un peu bloque car system.timespan est une

    structure. Si quelqu'un a une idée je suis preneur...

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Salut,

    En c# les structures ne peuvent pas hériter d'une autre structure ou d'une classe. Dans quelle mesure en as tu besoin ?

    Une solution OO est de faire une composition avec cette structure.

  3. #3
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    En effet il est impossible d'hérité de structure
    http://msdn.microsoft.com/fr-fr/libr...71(VS.71).aspx

    Par contre si tu veux tu peux décompiler la structure TimeSpan avec reflector et faire un copier coller. Ensuite tu ajoutes le code que tu veux.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 110
    Par défaut
    Merci,

    en fait j'ai la classe suivante

    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
     
    Public Class Delai
     
            Private m_Jour As Integer
            Private m_Heure As Integer
            Private m_Minute As Integer
            Private m_Secondes As Integer
            Public ReadOnly Property Minute() As Integer
                Get
                    Return m_Minute
                End Get
            End Property
            Public ReadOnly Property Heure() As Integer
                Get
                    Return m_Heure
                End Get
            End Property
            Public ReadOnly Property Jour() As Integer
                Get
                    Return m_Jour
                End Get
            End Property
            Public ReadOnly Property Secondes() As Integer
                Get
                    Return m_Secondes
                End Get
            End Property
     
            Public Sub New(ByVal oTimeSpan As System.TimeSpan)
                m_Jour = oTimeSpan.Days
                m_Heure = oTimeSpan.Hours
                m_Minute = oTimeSpan.Minutes
                m_Secondes = oTimeSpan.Seconds
            End Sub
        End Class
    Et Delai est "property" dans une autre classe "Rdtemp"

    Du coup pour instancier la classe delai je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new delai(new timespan(1,0,0,0)).
    Mon objectif est de pouvoir ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new delai(1,0,0,0)

  5. #5
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Pour ca il faut juste ajouter un constructeur dans ta classe Delai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Sub New(ByVal jour as Integer, ByVal heure as Integer, ByVal minute as Integer, ByVal secondes as Integer)
        m_Jour = jour
        m_Heure = heure
        m_Minute = minute
        m_Secondes = secondes
    End Sub

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 110
    Par défaut
    Merci,

    Mais en procedant de la sorte cela signifie que je suis obligé d'appeler la fonction avec tous les paramètres. Je ne peux pas faire comme timespan ou je pouvai appeller avec soit 2, 3 ou 4 paramètres.

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    new timespan(11,5,4)
     
    ou encore
     
    new timespan(1,1,5,4)
    Dans le premier cas le premier paramètre est interprete comme heure
    Dans le second cas il est interprete comme jour

  7. #7
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Bien sûr qu'on peut faire çà. Ca s'appelle la surcharge. Il suffit de déclarer plusieurs contructeurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public Sub New(ByVal jour as Integer, ByVal heure as Integer, ByVal minute as Integer, ByVal secondes as Integer)
        m_Jour = jour
        m_Heure = heure
        m_Minute = minute
        m_Secondes = secondes
    End Sub
     
    Public Sub New(ByVal heure as Integer, ByVal minute as Integer, ByVal secondes as Integer)
        m_Jour = 0
        m_Heure = heure
        m_Minute = minute
        m_Secondes = secondes
    End Sub

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

Discussions similaires

  1. Erreur fatale : compilation avec System.RTLVersion
    Par Beauserge dans le forum Delphi
    Réponses: 2
    Dernier message: 01/11/2006, 00h47
  2. récupérer le résultat avec "system()"
    Par kboo dans le forum MFC
    Réponses: 12
    Dernier message: 09/06/2006, 10h50
  3. [C#][2.0] Traces avec System.Diagnostics.Trace
    Par slopera dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/02/2006, 09h51
  4. Utiliser un héritage avec exclusion mutuelle correctement
    Par akecoocoo dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 20/11/2005, 22h54
  5. killer un prog lancé avec system()
    Par seal3 dans le forum C++
    Réponses: 8
    Dernier message: 04/11/2005, 22h12

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