【发布时间】:2017-02-17 05:51:09
【问题描述】:
我一直遇到错误“如果没有类的显式实例,就无法从共享方法或共享成员初始化程序中引用类的实例成员”。我正在开发一个 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 _SecutiryVar也共享
标签: asp.net-mvc vb.net