簡體   English   中英

VB.NET中的嵌套類中的屬性

[英]Properties in nested classes in VB.NET

我一直遇到錯誤“在沒有顯式類實例的情況下,無法從共享方法或共享成員初始化器中引用類的實例成員”。 我正在開發VB.NET MVC應用程序。 我有一個模型,該模型具有包含在頂級類中的頂級安全屬性,該屬性應該可供該類中的類使用。 我的屬性始終遵循以下結構:

    Private _SecurityVar = Nothing
    Public Shared Property SecurityVar
        Get
            If _SecurityVar = Nothing Then
                _SecurityVar = User.IsInRole("SecurityFunction")
            End If
            Return _SecurityVar
        End Get
        Set(value)

        End Set
    End Property

我的問題是我無法訪問未共享的_SecurityVar b / c。 我不希望_SecurityVar在我的視圖中可用,而只是SecurityVar。 然后,我需要從此類中所包含的類(例如訂單列表)中訪問這些頂級變量。 我不想簡單地返回User.IsInRole(“ SecurityFunction”),因為那樣我會多次訪問數據庫。 這將是極其低效的,尤其是在構建大型表時。 我該如何解決,還有更好的方法嗎?

只是也共享您的私有變量

Private Shared _SecurityVar = Nothing

而不是共享..讓您的子類知道他們的血統。

在子類中添加

Private myParent as <ParentClassName>
Public Sub New(Parent as <ParentClassName>)
   MyParent = Parent
End Sum

在父類中使用創建子類

Dim Child as New <YourSubClassName>(Me)

然后,當您需要子類中父項的某些內容時

Var = myParent.<Property Name>

如果計划在這些子類之間移動,則還需要使_Parent成為公共對象或添加一個方法,以便以后可以對其進行更改。

如果您不想讓子類對父類具有完全訪問權限,則可以將共享變量“分組”到父類中的另一個類中,然后傳遞該變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM