我一直遇到错误"如果没有类"的显式实例,则无法从共享方法或共享成员初始化程序中引用类的实例成员。我正在研究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"),因为我会多次访问数据库;这将是非常低效的,特别是在构建一个大表时。我如何解决这个问题,还有更好的方法吗?
答案 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设为公共或添加方法,以便稍后进行更改。
如果您不想允许子类完全访问父类,您可以将共享变量“分组”在父类中的另一个类中,然后传递它。