2009-04-20 7 views
0

Ich habe eine Reihe von Basisklassen in einem Namensraum und einige Sätze von abgeleiteten Klassen in anderen Namensräumen. Alles in einem Projekt. Etwas wie:Wie kann man die vb.net-Eigenschaft nur innerhalb eines bestimmten Namensraums sichtbar machen?

Namespace Base 
Public Class BaseElement 
    Protected Friend Readonly Property SubElements() as BaseElements 
End Class 
End Namespace 
... 
Namespace Books 
Public Class Book 
    Inherits Base.BaseElement 
    Public Readonly Property Pages() as Pages 
     return MyBase.SubElements 
    End Property 
End Class 
End Namespace 

ich mehrere abgeleitete Klassen und wollen sie müssen haben einige leicht verständliche Eigenschaften sichtbar statt .SubElements.

OK, es kann getan werden, .SubElements als Protected in BaseElement-Klasse zu deklarieren. Aber in diesem Fall kann ich nicht auf diese Eigenschaft von anderen Klassen im Base-Namespace zugreifen, die nicht davon abgeleitet sind.

Ich habe versucht, Friend Keyword hinzuzufügen, aber es machte diese Eigenschaft sichtbar, wenn ich abgeleitete Klassen instanziieren.

Also ... irgendeine Möglichkeit, einige Eigenschaften zu verstecken, wenn sie abgeleitete Klassen verwenden, während sie in der Lage sind, Basisklassen zu verwenden?

Antwort

2

.NET verfügt nicht über namespacebasierte Sichtbarkeitsmodifizierer.

Sie könnten möglicherweise alles in diesem Namespace in ein eigenes Klassenbibliotheksprojekt verschieben und es als Mitglied Friend haben - oder Sie könnten einfach damit leben, mehr Sichtbarkeit zu haben, als Sie möchten.

0

Ich glaube, dass Sie in diesem Fall eine Schnittstelle verwenden möchten.

Verwandte Themen