如果我設置朋友級別範圍上的二傳手,像這樣...限制Setter範圍並應用接口後,範圍被忽略!
Public Class MyClass
Public Property IsDirty() As Boolean
Get
Return _isDirty
End Get
Friend Set(ByVal trueFalse As Boolean)
_isDirty = trueFalse
End Set
End Property
End Class
...,然後從另一個項目中調用它,它工作正常。我無法做類似MyClass.IsDirty = True的事情。
太棒了!這正是我想要的。
但現在,如果我定義一個接口,而我確實將不得不這樣做:
Public Interface IMyClass
Property IsDirty() As Boolean
End Interface
我可以這樣做:
Dim MyInstance as IMyClass= GetSomeInstanceOfMyClass()
MyInstance.IsDirty=True
...而且,奇怪的是,它跑!不引發異常,並且內部變量設置爲True。它完全忽略了Friend範圍!
這很可怕。我在想什麼?
注意:我需要這個,因爲我設計了一個API,並且我希望內部API能夠設置IsDirty,但是最終開發人員不應該能夠進入。目前,我正在將整個班級包裝在外觀中以獲得此功能,但外觀應該是不必要的。
詛咒!那麼你在這裏做什麼,將這個類封裝在一個門面風格的結構中,並將其呈現給最終開發人員,同時保持「正常」類用於內部使用? – 2009-02-05 20:24:58