2010-10-05 44 views
0

我正在開發一個將在幾個項目中使用的類庫。.NET類訪問修飾符(朋友和公衆)

在我的類庫中,我有一個「Shape」類,它具有許多屬性。 其中一個屬性是「尺寸」,它返回一個具有「高度」「寬度」和「深度」屬性的類。

我該如何抑制Dimension類在編輯器中可見,同時在類庫中自由選擇?

我已經在類文件中放入了一個命令,但是這將它隱藏在庫和我的應用程序中。

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

我也改變了類接取修飾符朋友,但是這阻止時調用的類庫外物業公共接入Shape類。

我想要做的就是防止在類庫之外創建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

您可以創建一個公共接口(IShape)並創建一個實現它的私有類。