如何使vb.net属性仅在特定命名空间内可见?

时间:2009-04-20 18:49:35

标签: .net vb.net oop

我在一个名称空间中有一些基类,在其他名称空间中有几组派生类。一个项目中的一切。类似的东西:

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

我有多个派生类,希望它们具有一些易于理解的属性,而不是.SubElements。

好的,可以在BaseElement类中声明.SubElements为Protected。但在这种情况下,我无法从Base命名空间中的其他类中访问此属性,而这些类不是从它派生的。

我尝试添加了Friend关键字,但是当我实例化派生类时,它也使这个属性可见。

那么......在使用派生类时能否使用基类来隐藏某些属性的任何方法都可以吗?

2 个答案:

答案 0 :(得分:2)

.NET没有基于命名空间的可见性修饰符。

您可以将该命名空间中的所有内容移动到其自己的类库项目中,并将其作为Friend成员 - 或者您可以使用它具有比您想要的更多可见性。

答案 1 :(得分:0)

我相信你想在这种情况下使用接口。