cs_Myke
Messages postés138Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 2 février 2010
-
6 août 2007 à 22:28
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024
-
9 août 2007 à 20:18
Voici donc mon exemple
Public
Class
Main
Shared
_UserId
As
Integer
Public
Sub
New
(
ByVal
Par
As
Integer
)
....
End
Sub
Public
ReadOnly
Property
Nested()
Get
Return
New
NestedClass
End
Get
End
Property
REM - Class Nested
Friend
Class
NestedClass
Public
Sub
GetElement()
....
End
Sub
End
Class
End
Class
J'aimerais typé la propriété Nested de la class MAIN (AS NestedClass) pour que Intellisense prenne en charge cette class et me donne les méthodes contenues dans la class Nested (Main.Nested.GetElement). Mais lorsque je la type il me donne ceci comme erreur: ('Nested' cannot expose type 'NestedClass' outside the project through class 'Main'.) Je peux dans ce cas mettre la class NestedClass à public mais j'aimerais faire disparaitre les class inutile du coté de Intelissense et je ne veux pas que le programmeur puissent obtenir une instance de NestedClass sans passez par Main. Est-ce que vous avez la solution ?
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 8 août 2007 à 22:32
Bonjour
Normal, tu tente d'afficher une classe visible en Friend (Ami) en Public.
Soit tu change la visibilité de la classe NestedClass soit tu réduit la visibilité de la propriété Nested.
Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
cs_Myke
Messages postés138Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 2 février 2010 8 août 2007 à 22:37
Ce que j'ai de la misère à comprendre c'est pourquoi ce la fonctionne quand même. Je n'ai pas la propriété GetElement à partr de intelissense mais je peux très coté client faire Main.Nested.GetElement si la propriété Nested n'est pas typé !
cs_Myke
Messages postés138Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 2 février 2010 8 août 2007 à 22:54
C'est probablement moi qui pose mes questions de travers . Voici un exemple de ce que je veux reproduire : Une roue possède un bearing. Il me faudrait donc deux class. La premiere class : Roue et la deuxième Bearing. Par contre il n'est pas logique de créée un bearing avant d'avoir créée la class roue. J'ai tenté le coup avec les class imbriqués mais peut-être que ce n'est pas la solution. Est-ce que tu as une idée.
Myke
Vous n’avez pas trouvé la réponse que vous recherchez ?
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 9 août 2007 à 08:44
Bonjour
Imbriquer 2 classes n'est pas obligatoire, elle peuvent être déclarées indépendammant.
Il n'y a rien d'illogique à créer un Bearing alors que Roue n'est pas finie d'être déclarée :
Public Class Roue
Private mBearing as Bearing 'Pössibilité de mettre un As New si les paramètres à passer sont constant
public sub New(....)
mBearing=new Bearing(...)
end sub
public readonly property Bearing as Bearing
Get
Return mBearing
End get
end property
end class
public class Bearing
...
end class
Est tout à fait valable et pas illogique (dépend de ton problème).
Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
cs_Myke
Messages postés138Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 2 février 2010 9 août 2007 à 19:38
Je comprends ton point et mon exemple n'est peut-etre pas très bon. Je crois que je vais rester avec les class imbriqué car je ne veux pas que le programmeur utilise la class enfant si la class parent n'est pas declaré. Je reviens à ma question si tu connais la reponse. On ne peut pas typé la propriété nested parce que la class nestedclass est friend. Mais si on fait rouler il utilise la liason tardive et cela fonctionne. Il me semble que cela n'est pas logique. S'il me donne une erreur lorsque je programme la class il devrait me donner une erreur lors de l'execution.