Je développe une bibliothèque de classes qui sera utilisée dans plusieurs projets.Modificateurs d'accès de classe .NET (ami et public)
Dans ma bibliothèque de classes, j'ai une classe "Shape" qui a un certain nombre de propriétés. L'une de ces propriétés est "Dimensions" renvoie une classe avec les propriétés "Hauteur" "Largeur" et "Profondeur". Comment supprimer la classe Dimension de l'affichage dans l'éditeur, tout en étant librement disponible dans la bibliothèque de classes?
J'ai placé une commande dans le fichier de classe, mais cela la cache dans la bibliothèque et dans mon application.
<ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _
J'ai également changé le modificateur de acess de classe à un ami, mais cela empêche l'accès du public à la propriété dans la classe de forme lorsqu'il est appelé en dehors de la bibliothèque de classes. Tout ce que je veux faire est d'empêcher la création d'une instance de la classe Dimension en dehors de la bibliothèque de classes.
Merci.
C'est la fonctionnalité de code que je veux atteindre:
Interface IShape
ReadOnly Property Properties() As ShapeProperties
End Interface
Public Class Shape
Implements IShape
Dim _Properties As New ShapeProperties(0, 0, 0)
Sub New()
_Properties = New ShapeProperties(3, 4, 5)
End Sub
Public ReadOnly Property Properties() As ShapeProperties Implements IShape.Properties
Get
Return _Properties
End Get
End Property
End Class
Friend Class ShapeProperties
Dim _Height As Integer = 0
Dim _Width As Integer = 0
Dim _Depth As Integer = 0
Friend Sub New(ByVal h As Integer, ByVal w As Integer, ByVal d As Integer)
_Height = h
_Width = w
_Depth = d
End Sub
Private ReadOnly Property Height() As Integer
Get
Return _Height
End Get
End Property
Private ReadOnly Property Width() As Integer
Get
Return _Width
End Get
End Property
Private ReadOnly Property Depth() As Integer
Get
Return _Depth
End Get
End Property
End Class
Je ne pouvais pas compiler la bibliothèque de classes dans le code ci-dessus. Je veux que ShapeProperties soit seulement accessible dans la classe Shape, pas seul. La seule façon dont j'ai pu résoudre ceci était de changer la propriété d'accès de ShapeProperties qui n'est pas ce que je veux.
ClassLibrary.Shape est OK mais ClassLibrary.Properties ne l'est pas.
Merci.