Bonjour à tous,
je voulais savoir si il existait un mot clé en vb.net qui symbolise class hérité en a partir d'une classe abstraire, un peu comme le mybase qui symbolise la class parent?
Bonjour à tous,
je voulais savoir si il existait un mot clé en vb.net qui symbolise class hérité en a partir d'une classe abstraire, un peu comme le mybase qui symbolise la class parent?
Je n'ai pas bien compris, peux tu expliquer plus clairement ?
D'après ce que j'ai compris, ce n'est pas possible, car la classe héritée n'existe pas obligatoirement.
Autant une classe A qui hérite d'une autre classe B possède toujours une classe mère (B dans cet exemple), autant le cas contraire est fort improbable. Tu ne sais pas dire avec certitude qu'une classe possède des classes dérivées (à moins d'utiliser la reflection).
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
Les classes abstraites possèdent l'attribut MustInherit, elles doivent donc forcement être héritées, leur utilisation est semblable à celle des interfaces sauf que tu peut mettre du code dans une classe abstraite, alors q'une interface ne contient que les signatures de tes méthodes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Public MustInherit Class ClassA Public Sub Test() '??? 'Utilisation du mot clé appelant la classe héritée. '??? End Sub End Class
Je sais bien ce que sont les interfaces et les classes abstraitesEnvoyé par Aurazed
J'avais donc bien compris ton problème. Ce qu'il faut que tu comprennes, c'est que le fait que déclares une classe abstraite, ne veut pas dire pour autant que tu vas définir une classe qui en hérite. Tu peux très bien définir une classe abstraite, mais pas de classe qui en hérite. C'est certes inutiles, mais c'est possible, surtout pendant la phase de développement.
Deuxième problème, si tu définis deux classes qui héritent de ta classe abstraite, comment le mot-clé que tu souhaites trouver saurait il à quelle classe il doit faire référence ?
Donc je reste sur ma première impression, le mot-clé que tu recherches n'existe pas.
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
En fait je souhaite faire une classe abstraite qui permette de généraliser l'implementation du design pattern singleton à toute les classes qui en hérite,Envoyé par SaumonAgile
mais pour cela il faut appeler le constructeur ... chose infaisable avec une classe abstraite. Je voulais donc savoir comment appelé le constructeur de la class héritée.
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 Public MustInherit Class ClassSingleton ' Variable locale pour stocker une référence vers l'instance Private Shared pInstance As ClassSingleton= Nothing Private Shared ReadOnly pInstanceLocker As New Object() Private Sub New() End Sub Public Shared Function GetInstance() As ClassSingleton SyncLock (pInstanceLocker) If (pInstance Is Nothing) Then 'C'est la que je voudrais appeler le constructeur de la class héritée... pInstance = New ClassSingleton() End If Return pInstance End SyncLock End Function End Class
Tu as pensé à utiliser une classe Generique alors ?
Oui c'est en C# mais c'est pour l'idée simplement.
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 /// <summary> /// Generic singleton /// </summary> /// <typeparam name="T">Class</typeparam> class Singleton<T> where T : new() { private static readonly T _instance = new T(); /// <summary> /// Gets the instance. /// </summary> /// <value>The instance.</value> protected T Instance { get { return _instance; } } } class Client : Singleton<Client> { }
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
J'y aurais pas pensé
Je test ca et je te dis si ca me conviens.
Ta solution fonctionne tres bien.
Voici la version Visual Basic .Net
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 Public Class Singleton(Of T As New) Private Shared pInstance As T = Nothing Private Shared pLocker As Object = New Object() Public Shared ReadOnly Property Instance() As T Get SyncLock (pLocker) If pInstance Is Nothing Then pInstance = New T() End If Return pInstance End SyncLock End Get End Property End Class
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager