vb.net - VB.NET 共享索引器 - 我做错了什么?
问题描述
我有这堂课:
''' <summary>
''' Utility class for managing ASP.NET session state.
''' </summary>
Public Class SessionHelper
''' <summary>
''' Private constructor to prevent instantiation since classes cannot be declared Shared in VB.
''' </summary>
Private Sub New()
End Sub
''' <summary>
''' Retrieves the current session state.
''' </summary>
''' <returns></returns>
Public Shared ReadOnly Property Session As HttpSessionState
Get
Return HttpContext.Current.Session
End Get
End Property
''' <summary>
''' Retrieves the current system connection string.
''' </summary>
''' <returns></returns>
Public Shared ReadOnly Property ConnectionString As String
Get
Dim raw As String = Session(SessionConstants.DotNetConnectionString)
If raw Is Nothing Then Return Nothing
Return raw.Replace(",", ";")
End Get
End Property
''' <summary>
''' Gets or sets a session variable.
''' </summary>
''' <param name="key">The key of the session variable.</param>
''' <returns>The value of the session variable.</returns>
Public Shared Property Item(ByVal key As String) As Object
Get
Return Session(key)
End Get
Set(value As Object)
Session(key) = value
End Set
End Property
End Class
当我尝试调用共享索引器时出现编译错误:
SessionHelper("DotNetConnectionString")
错误 BC30109 'SessionHelper' 是类类型,不能用作表达式。
我究竟做错了什么?还是 VB 不支持共享索引器?我可以显式调用它,SessionHelper.Item("DotNetConnectionString")
但索引器语法不起作用。
解决方案
通过省略“Item”方法名称,您可以像访问默认索引器一样访问该方法,但该方法未声明为“Default”。事实上,您不能在 VB 中声明共享索引器。
例如,您必须更改对共享方法的调用:
SessionHelper.Item("DotNetConnectionString")
注意:我在发帖后注意到艾哈迈德在评论中包含了相同的信息,所以他应该得到充分的信任。
推荐阅读
- mysql - 哪个数据类型用于在 varchar 以外的列中插入从 10,000 到 100,000 的数据
- c# - 如何在绑定到数据表的 WPF 中的 DataGrid 中实现粘贴操作?
- excel - 将第 10 行冻结到 D 列
- zooming - MapBox 样式在低缩放级别隐藏点
- android - Android ConstraintLayout:相对于垂直邻居视图扩展内部 Scrollview
- java - Spring Boot 集成测试 MockBean 零交互
- python - 如果找到模式,则从列表中返回项目
- python - 选择 A 列的值以 B 列的值开头的行
- progress-bar - 在 tf.function 修饰函数中将张量转换为整数值?
- javascript - Vue JS 将父样式表应用于导入的组件