.NET类访问修饰符(朋友和公共)

时间:2010-10-05 05:01:50

标签: .net friend access-modifiers

我正在开发一个将在多个项目中使用的类库。

在我的类库中,我有一个“Shape”类,它有许多属性。 其中一个属性是“Dimensions”,它返回一个具有“Height”“Width”和“Depth”属性的类。

我如何禁止在编辑器中查看Dimension类,同时在类库中自由使用?

我在类文件中放了一个命令,但这会将它隐藏在库和我的应用程序中。

<ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _

我还将class acess修饰符更改为Friend,但是当在类库外部调用时,这会阻止公共访问Shape类中的Property。

我想做的就是阻止在类库外部创建Dimension类的实例。

感谢。

这是我想要实现的代码功能:

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

我无法在上面的代码中编译类库。我希望ShapeProperties只能在Shape类中访问,而不能单独访问。我能够解决这个问题的唯一方法是更改​​ShapeProperties的访问属性,这不是我想要的。

ClassLibrary.Shape可以,但是 ClassLibrary.Properties不是。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以创建一个公共接口(IShape)并创建一个实现它的私有类。