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 :

Comment créer une Interface incluant du code


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 102
    Points : 69
    Points
    69
    Par défaut Comment créer une Interface incluant du code
    Bonjour,

    L'interface IDisposable implémente du code et des commentaires dans la classe où il est implémenter.

    Comment créer une telle interface incluant du code et des commentaires ?


    Merci d'avance,

    Pascal

  2. #2
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Bonjour,

    en regardant du coté MSDN, tu trouvera p-e des réponses:
    http://msdn.microsoft.com/fr-fr/libr...isposable.aspx


  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Une interface n'implémente jamais de code. Pour référence, voici le contenu de IDisposable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    using System;
    using System.Runtime.InteropServices;
    namespace System
    {
    	/// <summary>Defines a method to release allocated resources.</summary>
    	/// <filterpriority>2</filterpriority>
    	[ComVisible(true)]
    	public interface IDisposable
    	{
    		/// <summary>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</summary>
    		/// <filterpriority>2</filterpriority>
    		void Dispose();
    	}
    }
    Le concept le plus proche de ce que tu appelles "une interface avec du code" est la classe abstraite. Les classes qui en héritent doivent implémenter les membres marqués MustInherit. Mais une classe abstraite peux aussi contenir des membres concrêts dont vont bénéficier les classes qui en héritent.

    Plus d'info ici: http://mbenzeghiba.developpez.com/tu...heritagevbnet/

    Exemple:

    public abstract class MyBase
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 102
    Points : 69
    Points
    69
    Par défaut
    hunteshiva,
    j'avais déjà regardé de ce côté, MSDN explique plutôt l'implémentation que la conception.

    SaumonAgile,
    je connais bien les classes abstraites et ce n'est pas du tout ce que je recherche à faire.
    L'interface IDisposable insère du code et des commentaires en plus des simples déclarations de méthodes et propriétés. Pour preuve, j'ai créé une classe vide et ajouté la ligne de code: "Implements IDisposable" et voici le résultat :
    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
     
    Public Class Class1
        Implements IDisposable
     
    #Region "IDisposable Support"
        Private disposedValue As Boolean ' To detect redundant calls
     
        ' IDisposable
        Protected Overridable Sub Dispose(ByVal disposing As Boolean)
            If Not Me.disposedValue Then
                If disposing Then
                    ' TODO: dispose managed state (managed objects).
                End If
     
                ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below.
                ' TODO: set large fields to null.
            End If
            Me.disposedValue = True
        End Sub
     
        ' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources.
        'Protected Overrides Sub Finalize()
        '    ' Do not change this code.  Put cleanup code in Dispose(ByVal disposing As Boolean) above.
        '    Dispose(False)
        '    MyBase.Finalize()
        'End Sub
     
        ' This code added by Visual Basic to correctly implement the disposable pattern.
        Public Sub Dispose() Implements IDisposable.Dispose
            ' Do not change this code.  Put cleanup code in Dispose(ByVal disposing As Boolean) above.
            Dispose(True)
            GC.SuppressFinalize(Me)
        End Sub
    #End Region
     
    End Class
    D'autres idées ?

    Pascal

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Un outils (visual studio? resharper? un autre?) t'as géneré du code pour une implémentation courante de IDisposable. Il n'y a pas de code dans une interface.

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    A mon avis c'est un snippet qui est responsable. C'est simplement un morceau de code configurable associé à un mot-clé.
    Fais une recherche sur les code snippets de Visual Studio pour comprendre comment cela fonctionne.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut interface imbrique avec un peu de code
    bonjour passepoil
    Bon avec un peu de ruse ty parviens quoique en soit une interface a ete concue pour eviter d'ecrire du code.....
    voici une interface qui contient une classe imbrique quoique il est preferable d'eviter d'ecrire un tel code puisqu'il peut etre reecrit en imbriquant 2 interfaces...
    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
    88
    89
    90
    91
    92
    93
     
    Public Class Form1
        Private objComputerAsset As ComputerAsset
        Public Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
     
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            objComputerAsset = New ComputerAsset("IBM", 5)
            objComputerAsset.Imbrique.Num = 125
            MessageBox.Show("from Form1 Num :" & objComputerAsset.Imbrique.Num)
            objComputerAsset.Imbrique.sub1(211)
        End Sub
    End Class
    Interface IAsset
        Event ComittedChange(ByVal Success As Boolean)
        Property Division() As String
        Function GetID() As Integer
        'Cette Classe Imbrique permet d'ecrire du code dans 
        'l'interface IAsset
        Class ClasseImbrique
            Dim INum As Integer = 0
            Sub sub1(ByVal i As Integer)
                ' Insert code here that implements this method.
                MessageBox.Show("from ClasseImbrique sub1 :" & i.ToString)
            End Sub
     
            Public Property Num() As Integer
                Get
                    Num = INum
                End Get
                Set(ByVal value As Integer)
                    INum = value
                    MessageBox.Show("from ClasseImbrique  INum :" & INum.ToString)
                End Set
            End Property
        End Class
        'Permettra d'acceder à ClasseImbrique
        'dans les classes qui implemente l'interfaceIAsset
        Property Imbrique() As ClasseImbrique
     
     
    End Interface
    'cette classe implement IAsset
    Class ComputerAsset
        Implements IAsset
        Private classeimbriqueValue As IAsset.ClasseImbrique
     
        Public Event ComittedChange(ByVal Success As Boolean) _
           Implements IAsset.ComittedChange
        'implemente property Division
        Private divisionValue As String
        Public Property Division() As String _
            Implements IAsset.Division
     
            Get
                Return divisionValue
            End Get
            Set(ByVal value As String)
                divisionValue = value
                RaiseEvent ComittedChange(True)
            End Set
        End Property
        'implemente Function GetID
        Private IDValue As Integer
     
        Public Function GetID() As Integer _
            Implements IAsset.GetID
     
            Return IDValue
        End Function
        'implemente Ctor
        Public Sub New(ByVal Division As String, ByVal ID As Integer)
            Me.divisionValue = Division
            Me.IDValue = ID
            classeimbriqueValue = New IAsset.ClasseImbrique
        End Sub
        'implemente ClasseImbrique GetID
     
        Public Property Imbrique() As IAsset.ClasseImbrique Implements IAsset.Imbrique
            Get
                Return classeimbriqueValue
            End Get
            Set(ByVal value As IAsset.ClasseImbrique)
                classeimbriqueValue = value
            End Set
        End Property
    End Class
    mais comme dit ci-dessus et pour appuyer ce qu'as dit Nathanael ,il vaudrait mieux definir une 2eme interface nomme IClasseImbrique pour ClasseImbrique
    Et ...imbriquer............IClasseImbrique.......
    Sur ce comme je jeune je ne dirais pas plus ,par sobriete voulue .........
    Bon code....

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 102
    Points : 69
    Points
    69
    Par défaut
    SaumonAgile,

    C'est effectivement un snippet dans Visual Studio qui insère le code et les commentaires.

    Merci de votre aide.


    Pascal

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

Discussions similaires

  1. Comment créer une interface avec implémentation
    Par Linconnu dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 27/10/2011, 18h12
  2. Comment créer une interface excel sur la base d'un tableau.?
    Par anasleco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/09/2009, 18h03
  3. Comment créer une interface graphique modulable ?
    Par michou22 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 17/04/2009, 19h26
  4. Réponses: 1
    Dernier message: 19/03/2008, 07h57
  5. Réponses: 7
    Dernier message: 10/01/2007, 18h41

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