VB.NET中

时间:2017-02-16 18:44:42

标签: asp.net-mvc 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"),因为我会多次访问数据库;这将是非常低效的,特别是在构建一个大表时。我如何解决这个问题,还有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

只是让你的私有变量共享

Private Shared _SecurityVar = Nothing

答案 1 :(得分:-1)

而不是共享..让您的子类知道他们的父母。

在子类中添加

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设为公共或添加方法,以便稍后进行更改。

如果您不想允许子类完全访问父类,您可以将共享变量“分组”在父类中的另一个类中,然后传递它。