Ich habe eine öffentliche Klasse in meinem VB.NET-Projekt, die eine List(Of String)
Eigenschaft hat. Diese Liste muss von anderen Klassen innerhalb des Projekts geändert werden, aber da die Klasse (irgendwann in der Zukunft) außerhalb des Projekts verfügbar gemacht werden kann, möchte ich, dass sie unter der Ebene nicht änderbar ist. Die Änderung der vorhandenen Eigenschaft innerhalb des Projekts erfolgt nur durch Aufruf der Methoden der Liste (insbesondere .Add
, gelegentlich .Clear
), nicht durch eine umfassende Ersetzung des Grundstückswerts durch eine neue Liste (weshalb ich es als ReadOnly
Eigentum habe).Erstellen Sie eine List-Eigenschaft, die nicht extern geändert werden kann
Ich habe mit eine Art und Weise, es zu tun kommen, aber ich bin mir nicht sicher, dass es genau das ist, was Sie „elegant“ nennen würden.
Es ist diese:
Friend mlst_ParameterNames As List(Of String) = New List(Of String)
Public ReadOnly Property ParameterNames() As List(Of String)
Get
Return New List(Of String)(mlst_ParameterNames)
End Get
End Property
Jetzt funktioniert dies nur schön und gut. Jede Klasse im Projekt, die direkt auf das Feld mlst_ParameterNames
zugreift, kann sie nach Bedarf modifizieren, aber alle Prozeduren, die über die public-Eigenschaft darauf zugreifen, können nach Herzenslust abknallen, werden aber nichts erreichen, da die Eigenschaftsprozedur immer eine zurückgibt Kopie der Liste, nicht die Liste selbst.
Aber natürlich, dass Overhead trägt, weshalb ich fühle, dass es nur ... na ja, viszeral "falsch" auf einer Ebene, obwohl es funktioniert.
Die Parameterliste wird nie groß sein. Es werden höchstens 50, meistens aber weniger als zehn Elemente enthalten sein, also kann ich nicht sehen, dass dies jemals ein Performance-Killer ist. Allerdings hat es mich natürlich dazu gebracht, zu denken, dass jemand, der weit mehr VB.NET-Stunden auf dem Buckel hat, eine viel sauberere und sauberere Idee haben könnte.
Jeder?
Ich denke, Ihre eigene Lösung genug gut ist, und Sie brauchen nicht, andere workaroung – SysDragon
@SysDragon: basierend auf der Anzahl von Elementen in der Sammlung, ich bin einverstanden. – Paul